Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
38f0c607
Commit
38f0c607
authored
Mar 25, 2014
by
Damien George
Browse files
stmhal: Change Usart creation function to class make_new.
parent
30216325
Changes
3
Hide whitespace changes
Inline
Side-by-side
stmhal/modpyb.c
View file @
38f0c607
...
@@ -255,7 +255,7 @@ STATIC const mp_map_elem_t pyb_module_globals_table[] = {
...
@@ -255,7 +255,7 @@ STATIC const mp_map_elem_t pyb_module_globals_table[] = {
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_Led
),
(
mp_obj_t
)
&
pyb_led_type
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_Led
),
(
mp_obj_t
)
&
pyb_led_type
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_I2C
),
(
mp_obj_t
)
&
pyb_i2c_type
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_I2C
),
(
mp_obj_t
)
&
pyb_i2c_type
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_Usart
),
(
mp_obj_t
)
&
pyb_
U
sart_
obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_Usart
),
(
mp_obj_t
)
&
pyb_
u
sart_
type
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_ADC
),
(
mp_obj_t
)
&
pyb_adc_type
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_ADC
),
(
mp_obj_t
)
&
pyb_adc_type
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_ADC_all
),
(
mp_obj_t
)
&
pyb_ADC_all_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_ADC_all
),
(
mp_obj_t
)
&
pyb_ADC_all_obj
},
...
...
stmhal/usart.c
View file @
38f0c607
#include
<stdio.h>
#include
<stdio.h>
#include
<string.h>
#include
<string.h>
#include
<stm32f4xx_hal.h>
#include
"stm32f4xx_hal.h"
#include
"nlr.h"
#include
"misc.h"
#include
"misc.h"
#include
"mpconfig.h"
#include
"mpconfig.h"
#include
"qstr.h"
#include
"qstr.h"
...
@@ -71,8 +73,8 @@ void usart_init(pyb_usart_obj_t *usart_obj, uint32_t baudrate) {
...
@@ -71,8 +73,8 @@ void usart_init(pyb_usart_obj_t *usart_obj, uint32_t baudrate) {
break
;
break
;
}
}
/
*
Initialize USARTx
*/
/
/
Initialize USARTx
GPIO_InitTypeDef
GPIO_InitStructure
;
GPIO_InitTypeDef
GPIO_InitStructure
;
GPIO_InitStructure
.
Pin
=
GPIO_Pin
;
GPIO_InitStructure
.
Pin
=
GPIO_Pin
;
GPIO_InitStructure
.
Speed
=
GPIO_SPEED_HIGH
;
GPIO_InitStructure
.
Speed
=
GPIO_SPEED_HIGH
;
...
@@ -135,7 +137,33 @@ void usart_tx_strn_cooked(pyb_usart_obj_t *usart_obj, const char *str, uint len)
...
@@ -135,7 +137,33 @@ void usart_tx_strn_cooked(pyb_usart_obj_t *usart_obj, const char *str, uint len)
/******************************************************************************/
/******************************************************************************/
/* Micro Python bindings */
/* Micro Python bindings */
static
mp_obj_t
usart_obj_status
(
mp_obj_t
self_in
)
{
STATIC
void
usart_obj_print
(
void
(
*
print
)(
void
*
env
,
const
char
*
fmt
,
...),
void
*
env
,
mp_obj_t
self_in
,
mp_print_kind_t
kind
)
{
pyb_usart_obj_t
*
self
=
self_in
;
print
(
env
,
"<Usart %lu>"
,
self
->
usart_id
);
}
STATIC
mp_obj_t
usart_obj_make_new
(
mp_obj_t
type_in
,
uint
n_args
,
uint
n_kw
,
const
mp_obj_t
*
args
)
{
// check arguments
if
(
!
(
n_args
==
2
&&
n_kw
==
0
))
{
nlr_jump
(
mp_obj_new_exception_msg
(
&
mp_type_ValueError
,
"Usart accepts 2 arguments"
));
}
if
(
mp_obj_get_int
(
args
[
0
])
>
PYB_USART_MAX
)
{
return
mp_const_none
;
}
pyb_usart_obj_t
*
o
=
m_new_obj
(
pyb_usart_obj_t
);
o
->
base
.
type
=
&
pyb_usart_type
;
o
->
usart_id
=
mp_obj_get_int
(
args
[
0
]);
o
->
is_enabled
=
true
;
/* init USART */
usart_init
(
o
,
mp_obj_get_int
(
args
[
1
]));
return
o
;
}
STATIC
mp_obj_t
usart_obj_status
(
mp_obj_t
self_in
)
{
pyb_usart_obj_t
*
self
=
self_in
;
pyb_usart_obj_t
*
self
=
self_in
;
if
(
usart_rx_any
(
self
))
{
if
(
usart_rx_any
(
self
))
{
return
mp_const_true
;
return
mp_const_true
;
...
@@ -144,7 +172,7 @@ static mp_obj_t usart_obj_status(mp_obj_t self_in) {
...
@@ -144,7 +172,7 @@ static mp_obj_t usart_obj_status(mp_obj_t self_in) {
}
}
}
}
static
mp_obj_t
usart_obj_rx_char
(
mp_obj_t
self_in
)
{
STATIC
mp_obj_t
usart_obj_rx_char
(
mp_obj_t
self_in
)
{
mp_obj_t
ret
=
mp_const_none
;
mp_obj_t
ret
=
mp_const_none
;
pyb_usart_obj_t
*
self
=
self_in
;
pyb_usart_obj_t
*
self
=
self_in
;
...
@@ -154,7 +182,7 @@ static mp_obj_t usart_obj_rx_char(mp_obj_t self_in) {
...
@@ -154,7 +182,7 @@ static mp_obj_t usart_obj_rx_char(mp_obj_t self_in) {
return
ret
;
return
ret
;
}
}
static
mp_obj_t
usart_obj_tx_char
(
mp_obj_t
self_in
,
mp_obj_t
c
)
{
STATIC
mp_obj_t
usart_obj_tx_char
(
mp_obj_t
self_in
,
mp_obj_t
c
)
{
pyb_usart_obj_t
*
self
=
self_in
;
pyb_usart_obj_t
*
self
=
self_in
;
uint
len
;
uint
len
;
const
char
*
str
=
mp_obj_str_get_data
(
c
,
&
len
);
const
char
*
str
=
mp_obj_str_get_data
(
c
,
&
len
);
...
@@ -164,7 +192,7 @@ static mp_obj_t usart_obj_tx_char(mp_obj_t self_in, mp_obj_t c) {
...
@@ -164,7 +192,7 @@ static mp_obj_t usart_obj_tx_char(mp_obj_t self_in, mp_obj_t c) {
return
mp_const_none
;
return
mp_const_none
;
}
}
static
mp_obj_t
usart_obj_tx_str
(
mp_obj_t
self_in
,
mp_obj_t
s
)
{
STATIC
mp_obj_t
usart_obj_tx_str
(
mp_obj_t
self_in
,
mp_obj_t
s
)
{
pyb_usart_obj_t
*
self
=
self_in
;
pyb_usart_obj_t
*
self
=
self_in
;
if
(
self
->
is_enabled
)
{
if
(
self
->
is_enabled
)
{
if
(
MP_OBJ_IS_STR
(
s
))
{
if
(
MP_OBJ_IS_STR
(
s
))
{
...
@@ -176,15 +204,10 @@ static mp_obj_t usart_obj_tx_str(mp_obj_t self_in, mp_obj_t s) {
...
@@ -176,15 +204,10 @@ static mp_obj_t usart_obj_tx_str(mp_obj_t self_in, mp_obj_t s) {
return
mp_const_none
;
return
mp_const_none
;
}
}
static
void
usart_obj_print
(
void
(
*
print
)(
void
*
env
,
const
char
*
fmt
,
...),
void
*
env
,
mp_obj_t
self_in
,
mp_print_kind_t
kind
)
{
STATIC
MP_DEFINE_CONST_FUN_OBJ_1
(
usart_obj_status_obj
,
usart_obj_status
);
pyb_usart_obj_t
*
self
=
self_in
;
STATIC
MP_DEFINE_CONST_FUN_OBJ_1
(
usart_obj_rx_char_obj
,
usart_obj_rx_char
);
print
(
env
,
"<Usart %lu>"
,
self
->
usart_id
);
STATIC
MP_DEFINE_CONST_FUN_OBJ_2
(
usart_obj_tx_char_obj
,
usart_obj_tx_char
);
}
STATIC
MP_DEFINE_CONST_FUN_OBJ_2
(
usart_obj_tx_str_obj
,
usart_obj_tx_str
);
static
MP_DEFINE_CONST_FUN_OBJ_1
(
usart_obj_status_obj
,
usart_obj_status
);
static
MP_DEFINE_CONST_FUN_OBJ_1
(
usart_obj_rx_char_obj
,
usart_obj_rx_char
);
static
MP_DEFINE_CONST_FUN_OBJ_2
(
usart_obj_tx_char_obj
,
usart_obj_tx_char
);
static
MP_DEFINE_CONST_FUN_OBJ_2
(
usart_obj_tx_str_obj
,
usart_obj_tx_str
);
STATIC
const
mp_method_t
usart_methods
[]
=
{
STATIC
const
mp_method_t
usart_methods
[]
=
{
{
"status"
,
&
usart_obj_status_obj
},
{
"status"
,
&
usart_obj_status_obj
},
...
@@ -194,27 +217,10 @@ STATIC const mp_method_t usart_methods[] = {
...
@@ -194,27 +217,10 @@ STATIC const mp_method_t usart_methods[] = {
{
NULL
,
NULL
},
{
NULL
,
NULL
},
};
};
STATIC
const
mp_obj_type_t
usart_
obj_
type
=
{
const
mp_obj_type_t
pyb_
usart_type
=
{
{
&
mp_type_type
},
{
&
mp_type_type
},
.
name
=
MP_QSTR_Usart
,
.
name
=
MP_QSTR_Usart
,
.
print
=
usart_obj_print
,
.
print
=
usart_obj_print
,
.
make_new
=
usart_obj_make_new
,
.
methods
=
usart_methods
,
.
methods
=
usart_methods
,
};
};
mp_obj_t
pyb_Usart
(
mp_obj_t
usart_id
,
mp_obj_t
baudrate
)
{
if
(
mp_obj_get_int
(
usart_id
)
>
PYB_USART_MAX
)
{
return
mp_const_none
;
}
pyb_usart_obj_t
*
o
=
m_new_obj
(
pyb_usart_obj_t
);
o
->
base
.
type
=
&
usart_obj_type
;
o
->
usart_id
=
mp_obj_get_int
(
usart_id
);
o
->
is_enabled
=
true
;
/* init USART */
usart_init
(
o
,
mp_obj_get_int
(
baudrate
));
return
o
;
}
MP_DEFINE_CONST_FUN_OBJ_2
(
pyb_Usart_obj
,
pyb_Usart
);
stmhal/usart.h
View file @
38f0c607
...
@@ -15,6 +15,7 @@ typedef enum {
...
@@ -15,6 +15,7 @@ typedef enum {
typedef
struct
_pyb_usart_obj_t
pyb_usart_obj_t
;
typedef
struct
_pyb_usart_obj_t
pyb_usart_obj_t
;
extern
pyb_usart_obj_t
*
pyb_usart_global_debug
;
extern
pyb_usart_obj_t
*
pyb_usart_global_debug
;
extern
const
mp_obj_type_t
pyb_usart_type
;
void
usart_init
(
pyb_usart_obj_t
*
usart_obj
,
uint32_t
baudrate
);
void
usart_init
(
pyb_usart_obj_t
*
usart_obj
,
uint32_t
baudrate
);
bool
usart_rx_any
(
pyb_usart_obj_t
*
usart_obj
);
bool
usart_rx_any
(
pyb_usart_obj_t
*
usart_obj
);
...
@@ -23,6 +24,3 @@ void usart_tx_str(pyb_usart_obj_t *usart_obj, const char *str);
...
@@ -23,6 +24,3 @@ void usart_tx_str(pyb_usart_obj_t *usart_obj, const char *str);
void
usart_tx_strn
(
pyb_usart_obj_t
*
usart_obj
,
const
char
*
str
,
uint
len
);
void
usart_tx_strn
(
pyb_usart_obj_t
*
usart_obj
,
const
char
*
str
,
uint
len
);
void
usart_tx_strn_cooked
(
pyb_usart_obj_t
*
usart_obj
,
const
char
*
str
,
uint
len
);
void
usart_tx_strn_cooked
(
pyb_usart_obj_t
*
usart_obj
,
const
char
*
str
,
uint
len
);
mp_obj_t
pyb_Usart
(
mp_obj_t
usart_id
,
mp_obj_t
baudrate
);
MP_DECLARE_CONST_FUN_OBJ
(
pyb_Usart_obj
);
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment