diff options
-rw-r--r-- | stmhal/timer.c | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/stmhal/timer.c b/stmhal/timer.c index 8d462975e1..f1f14f3315 100644 --- a/stmhal/timer.c +++ b/stmhal/timer.c @@ -454,7 +454,15 @@ STATIC void pyb_timer_print(const mp_print_t *print, mp_obj_t self_in, mp_print_ self->tim.Init.CounterMode == TIM_COUNTERMODE_DOWN ? "DOWN" : "CENTER", self->tim.Init.ClockDivision == TIM_CLOCKDIVISION_DIV4 ? 4 : self->tim.Init.ClockDivision == TIM_CLOCKDIVISION_DIV2 ? 2 : 1); - if (IS_TIM_ADVANCED_INSTANCE(self->tim.Instance)) { + + #if defined(IS_TIM_ADVANCED_INSTANCE) + if (IS_TIM_ADVANCED_INSTANCE(self->tim.Instance)) + #elif defined(IS_TIM_BREAK_INSTANCE) + if (IS_TIM_BREAK_INSTANCE(self->tim.Instance)) + #else + if (0) + #endif + { mp_printf(print, ", deadtime=%u", compute_ticks_from_dtg(self->tim.Instance->BDTR & TIM_BDTR_DTG)); } @@ -563,9 +571,15 @@ STATIC mp_obj_t pyb_timer_init_helper(pyb_timer_obj_t *self, mp_uint_t n_args, c #if defined(TIM8) case 8: __TIM8_CLK_ENABLE(); break; #endif + #if defined(TIM9) case 9: __TIM9_CLK_ENABLE(); break; + #endif + #if defined(TIM10) case 10: __TIM10_CLK_ENABLE(); break; + #endif + #if defined(TIM11) case 11: __TIM11_CLK_ENABLE(); break; + #endif #if defined(TIM12) case 12: __TIM12_CLK_ENABLE(); break; #endif @@ -575,6 +589,15 @@ STATIC mp_obj_t pyb_timer_init_helper(pyb_timer_obj_t *self, mp_uint_t n_args, c #if defined(TIM14) case 14: __TIM14_CLK_ENABLE(); break; #endif + #if defined(TIM15) + case 15: __TIM15_CLK_ENABLE(); break; + #endif + #if defined(TIM16) + case 16: __TIM16_CLK_ENABLE(); break; + #endif + #if defined(TIM17) + case 17: __TIM17_CLK_ENABLE(); break; + #endif } // set IRQ priority (if not a special timer) @@ -584,7 +607,13 @@ STATIC mp_obj_t pyb_timer_init_helper(pyb_timer_obj_t *self, mp_uint_t n_args, c // init TIM HAL_TIM_Base_Init(&self->tim); + #if defined(IS_TIM_ADVANCED_INSTANCE) if (IS_TIM_ADVANCED_INSTANCE(self->tim.Instance)) { + #elif defined(IS_TIM_BREAK_INSTANCE) + if (IS_TIM_BREAK_INSTANCE(self->tim.Instance)) { + #else + if (0) { + #endif config_deadtime(self, args[6].u_int); } if (args[5].u_obj == mp_const_none) { @@ -617,7 +646,11 @@ STATIC mp_obj_t pyb_timer_make_new(const mp_obj_type_t *type, mp_uint_t n_args, tim->is_32bit = false; switch (tim->tim_id) { + #if defined(MCU_SERIES_F4) || defined(MCU_SERIES_F7) case 1: tim->tim.Instance = TIM1; tim->irqn = TIM1_UP_TIM10_IRQn; break; + #elif defined(MCU_SERIES_L4) + case 1: tim->tim.Instance = TIM1; tim->irqn = TIM1_UP_TIM16_IRQn; break; + #endif case 2: tim->tim.Instance = TIM2; tim->irqn = TIM2_IRQn; tim->is_32bit = true; break; case 3: tim->tim.Instance = TIM3; tim->irqn = TIM3_IRQn; break; case 4: tim->tim.Instance = TIM4; tim->irqn = TIM4_IRQn; break; @@ -629,11 +662,21 @@ STATIC mp_obj_t pyb_timer_make_new(const mp_obj_type_t *type, mp_uint_t n_args, case 7: tim->tim.Instance = TIM7; tim->irqn = TIM7_IRQn; break; #endif #if defined(TIM8) + #if defined(MCU_SERIES_F4) || defined(MCU_SERIES_F7) case 8: tim->tim.Instance = TIM8; tim->irqn = TIM8_UP_TIM13_IRQn; break; + #elif defined(MCU_SERIES_L4) + case 8: tim->tim.Instance = TIM8; tim->irqn = TIM8_UP_IRQn; break; #endif + #endif + #if defined(TIM9) case 9: tim->tim.Instance = TIM9; tim->irqn = TIM1_BRK_TIM9_IRQn; break; + #endif + #if defined(TIM10) case 10: tim->tim.Instance = TIM10; tim->irqn = TIM1_UP_TIM10_IRQn; break; + #endif + #if defined(TIM11) case 11: tim->tim.Instance = TIM11; tim->irqn = TIM1_TRG_COM_TIM11_IRQn; break; + #endif #if defined(TIM12) case 12: tim->tim.Instance = TIM12; tim->irqn = TIM8_BRK_TIM12_IRQn; break; #endif @@ -643,6 +686,15 @@ STATIC mp_obj_t pyb_timer_make_new(const mp_obj_type_t *type, mp_uint_t n_args, #if defined(TIM14) case 14: tim->tim.Instance = TIM14; tim->irqn = TIM8_TRG_COM_TIM14_IRQn; break; #endif + #if defined(TIM15) + case 15: tim->tim.Instance = TIM15; tim->irqn = TIM1_BRK_TIM15_IRQn; break; + #endif + #if defined(TIM16) + case 16: tim->tim.Instance = TIM16; tim->irqn = TIM1_UP_TIM16_IRQn; break; + #endif + #if defined(TIM17) + case 17: tim->tim.Instance = TIM17; tim->irqn = TIM1_TRG_COM_TIM17_IRQn; break; + #endif default: nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_ValueError, "Timer %d does not exist", tim->tim_id)); } |