Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
c92c7a69
Commit
c92c7a69
authored
Apr 18, 2015
by
Damien George
Browse files
stmhal: Exclude code for those timers that don't exist in the hardware.
parent
7d6595fd
Changes
3
Hide whitespace changes
Inline
Side-by-side
stmhal/adc.c
View file @
c92c7a69
...
...
@@ -212,6 +212,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(adc_read_obj, adc_read);
/// print(val) # print the value out
///
/// This function does not allocate any memory.
#if defined(TIM6)
STATIC
mp_obj_t
adc_read_timed
(
mp_obj_t
self_in
,
mp_obj_t
buf_in
,
mp_obj_t
freq_in
)
{
pyb_obj_adc_t
*
self
=
self_in
;
...
...
@@ -274,10 +275,13 @@ STATIC mp_obj_t adc_read_timed(mp_obj_t self_in, mp_obj_t buf_in, mp_obj_t freq_
return
mp_obj_new_int
(
bufinfo
.
len
);
}
STATIC
MP_DEFINE_CONST_FUN_OBJ_3
(
adc_read_timed_obj
,
adc_read_timed
);
#endif
STATIC
const
mp_map_elem_t
adc_locals_dict_table
[]
=
{
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_read
),
(
mp_obj_t
)
&
adc_read_obj
},
#if defined(TIM6)
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_read_timed
),
(
mp_obj_t
)
&
adc_read_timed_obj
},
#endif
};
STATIC
MP_DEFINE_CONST_DICT
(
adc_locals_dict
,
adc_locals_dict_table
);
...
...
stmhal/dac.c
View file @
c92c7a69
...
...
@@ -77,6 +77,7 @@ void dac_init(void) {
HAL_DAC_Init
(
&
DAC_Handle
);
}
#if defined(TIM6)
STATIC
void
TIM6_Config
(
uint
freq
)
{
// Init TIM6 at the required frequency (in Hz)
timer_tim6_init
(
freq
);
...
...
@@ -90,6 +91,7 @@ STATIC void TIM6_Config(uint freq) {
// TIM6 start counter
HAL_TIM_Base_Start
(
&
TIM6_Handle
);
}
#endif
/******************************************************************************/
// Micro Python bindings
...
...
@@ -167,6 +169,7 @@ STATIC mp_obj_t pyb_dac_make_new(mp_obj_t type_in, mp_uint_t n_args, mp_uint_t n
return
dac
;
}
#if defined(TIM6)
/// \method noise(freq)
/// Generate a pseudo-random noise signal. A new random sample is written
/// to the DAC output at the given frequency.
...
...
@@ -193,7 +196,9 @@ STATIC mp_obj_t pyb_dac_noise(mp_obj_t self_in, mp_obj_t freq) {
return
mp_const_none
;
}
STATIC
MP_DEFINE_CONST_FUN_OBJ_2
(
pyb_dac_noise_obj
,
pyb_dac_noise
);
#endif
#if defined(TIM6)
/// \method triangle(freq)
/// Generate a triangle wave. The value on the DAC output changes at
/// the given frequency, and the frequence of the repeating triangle wave
...
...
@@ -221,6 +226,7 @@ STATIC mp_obj_t pyb_dac_triangle(mp_obj_t self_in, mp_obj_t freq) {
return
mp_const_none
;
}
STATIC
MP_DEFINE_CONST_FUN_OBJ_2
(
pyb_dac_triangle_obj
,
pyb_dac_triangle
);
#endif
/// \method write(value)
/// Direct access to the DAC output (8 bit only at the moment).
...
...
@@ -242,6 +248,7 @@ STATIC mp_obj_t pyb_dac_write(mp_obj_t self_in, mp_obj_t val) {
}
STATIC
MP_DEFINE_CONST_FUN_OBJ_2
(
pyb_dac_write_obj
,
pyb_dac_write
);
#if defined(TIM6)
/// \method write_timed(data, freq, *, mode=DAC.NORMAL)
/// Initiates a burst of RAM to DAC using a DMA transfer.
/// The input data is treated as an array of bytes (8 bit data).
...
...
@@ -352,13 +359,16 @@ mp_obj_t pyb_dac_write_timed(mp_uint_t n_args, const mp_obj_t *args, mp_map_t *k
return
mp_const_none
;
}
STATIC
MP_DEFINE_CONST_FUN_OBJ_KW
(
pyb_dac_write_timed_obj
,
1
,
pyb_dac_write_timed
);
#endif
STATIC
const
mp_map_elem_t
pyb_dac_locals_dict_table
[]
=
{
// instance methods
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_write
),
(
mp_obj_t
)
&
pyb_dac_write_obj
},
#if defined(TIM6)
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_noise
),
(
mp_obj_t
)
&
pyb_dac_noise_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_triangle
),
(
mp_obj_t
)
&
pyb_dac_triangle_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_write
),
(
mp_obj_t
)
&
pyb_dac_write_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_write_timed
),
(
mp_obj_t
)
&
pyb_dac_write_timed_obj
},
#endif
// class constants
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_NORMAL
),
MP_OBJ_NEW_SMALL_INT
(
DMA_NORMAL
)
},
...
...
stmhal/timer.c
View file @
c92c7a69
...
...
@@ -223,6 +223,7 @@ void timer_tim5_init(void) {
HAL_TIM_PWM_Init
(
&
TIM5_Handle
);
}
#if defined(TIM6)
// Init TIM6 with a counter-overflow at the given frequency (given in Hz)
// TIM6 is used by the DAC and ADC for auto sampling at a given frequency
// This function inits but does not start the timer
...
...
@@ -247,6 +248,7 @@ void timer_tim6_init(uint freq) {
TIM6_Handle
.
Init
.
CounterMode
=
TIM_COUNTERMODE_UP
;
// unused for TIM6
HAL_TIM_Base_Init
(
&
TIM6_Handle
);
}
#endif
// Interrupt dispatch
void
HAL_TIM_PeriodElapsedCallback
(
TIM_HandleTypeDef
*
htim
)
{
...
...
@@ -587,15 +589,27 @@ STATIC mp_obj_t pyb_timer_init_helper(pyb_timer_obj_t *self, mp_uint_t n_args, c
case
3
:
__TIM3_CLK_ENABLE
();
break
;
case
4
:
__TIM4_CLK_ENABLE
();
break
;
case
5
:
__TIM5_CLK_ENABLE
();
break
;
#if defined(TIM6)
case
6
:
__TIM6_CLK_ENABLE
();
break
;
#endif
#if defined(TIM7)
case
7
:
__TIM7_CLK_ENABLE
();
break
;
#endif
#if defined(TIM8)
case
8
:
__TIM8_CLK_ENABLE
();
break
;
#endif
case
9
:
__TIM9_CLK_ENABLE
();
break
;
case
10
:
__TIM10_CLK_ENABLE
();
break
;
case
11
:
__TIM11_CLK_ENABLE
();
break
;
#if defined(TIM12)
case
12
:
__TIM12_CLK_ENABLE
();
break
;
#endif
#if defined(TIM13)
case
13
:
__TIM13_CLK_ENABLE
();
break
;
#endif
#if defined(TIM14)
case
14
:
__TIM14_CLK_ENABLE
();
break
;
#endif
}
// set IRQ priority (if not a special timer)
...
...
@@ -643,15 +657,27 @@ STATIC mp_obj_t pyb_timer_make_new(mp_obj_t type_in, mp_uint_t n_args, mp_uint_t
case
3
:
nlr_raise
(
mp_obj_new_exception_msg
(
&
mp_type_ValueError
,
"Timer 3 is for internal use only"
));
// TIM3 used for low-level stuff; go via regs if necessary
case
4
:
tim
->
tim
.
Instance
=
TIM4
;
tim
->
irqn
=
TIM4_IRQn
;
break
;
case
5
:
tim
->
tim
.
Instance
=
TIM5
;
tim
->
irqn
=
TIM5_IRQn
;
tim
->
is_32bit
=
true
;
break
;
#if defined(TIM6)
case
6
:
tim
->
tim
.
Instance
=
TIM6
;
tim
->
irqn
=
TIM6_DAC_IRQn
;
break
;
#endif
#if defined(TIM7)
case
7
:
tim
->
tim
.
Instance
=
TIM7
;
tim
->
irqn
=
TIM7_IRQn
;
break
;
#endif
#if defined(TIM8)
case
8
:
tim
->
tim
.
Instance
=
TIM8
;
tim
->
irqn
=
TIM8_UP_TIM13_IRQn
;
break
;
#endif
case
9
:
tim
->
tim
.
Instance
=
TIM9
;
tim
->
irqn
=
TIM1_BRK_TIM9_IRQn
;
break
;
case
10
:
tim
->
tim
.
Instance
=
TIM10
;
tim
->
irqn
=
TIM1_UP_TIM10_IRQn
;
break
;
case
11
:
tim
->
tim
.
Instance
=
TIM11
;
tim
->
irqn
=
TIM1_TRG_COM_TIM11_IRQn
;
break
;
#if defined(TIM12)
case
12
:
tim
->
tim
.
Instance
=
TIM12
;
tim
->
irqn
=
TIM8_BRK_TIM12_IRQn
;
break
;
#endif
#if defined(TIM13)
case
13
:
tim
->
tim
.
Instance
=
TIM13
;
tim
->
irqn
=
TIM8_UP_TIM13_IRQn
;
break
;
#endif
#if defined(TIM14)
case
14
:
tim
->
tim
.
Instance
=
TIM14
;
tim
->
irqn
=
TIM8_TRG_COM_TIM14_IRQn
;
break
;
#endif
default:
nlr_raise
(
mp_obj_new_exception_msg_varg
(
&
mp_type_ValueError
,
"Timer %d does not exist"
,
tim
->
tim_id
));
}
...
...
@@ -986,7 +1012,10 @@ STATIC mp_obj_t pyb_timer_channel(mp_uint_t n_args, const mp_obj_t *pos_args, mp
&&
self
->
tim
.
Instance
!=
TIM3
&&
self
->
tim
.
Instance
!=
TIM4
&&
self
->
tim
.
Instance
!=
TIM5
&&
self
->
tim
.
Instance
!=
TIM8
)
{
#if defined(TIM8)
&&
self
->
tim
.
Instance
!=
TIM8
#endif
)
{
nlr_raise
(
mp_obj_new_exception_msg_varg
(
&
mp_type_ValueError
,
"encoder not supported on timer %d"
,
self
->
tim_id
));
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a 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