Skip to content

Commit 31f5dc0

Browse files
Tobias Badertscherdpgeorge
authored andcommitted
stmhal: L4: Modify timer.c to support L4 MCU.
1 parent 432465b commit 31f5dc0

1 file changed

Lines changed: 53 additions & 1 deletion

File tree

stmhal/timer.c

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,15 @@ STATIC void pyb_timer_print(const mp_print_t *print, mp_obj_t self_in, mp_print_
454454
self->tim.Init.CounterMode == TIM_COUNTERMODE_DOWN ? "DOWN" : "CENTER",
455455
self->tim.Init.ClockDivision == TIM_CLOCKDIVISION_DIV4 ? 4 :
456456
self->tim.Init.ClockDivision == TIM_CLOCKDIVISION_DIV2 ? 2 : 1);
457-
if (IS_TIM_ADVANCED_INSTANCE(self->tim.Instance)) {
457+
458+
#if defined(IS_TIM_ADVANCED_INSTANCE)
459+
if (IS_TIM_ADVANCED_INSTANCE(self->tim.Instance))
460+
#elif defined(IS_TIM_BREAK_INSTANCE)
461+
if (IS_TIM_BREAK_INSTANCE(self->tim.Instance))
462+
#else
463+
if (0)
464+
#endif
465+
{
458466
mp_printf(print, ", deadtime=%u",
459467
compute_ticks_from_dtg(self->tim.Instance->BDTR & TIM_BDTR_DTG));
460468
}
@@ -563,9 +571,15 @@ STATIC mp_obj_t pyb_timer_init_helper(pyb_timer_obj_t *self, mp_uint_t n_args, c
563571
#if defined(TIM8)
564572
case 8: __TIM8_CLK_ENABLE(); break;
565573
#endif
574+
#if defined(TIM9)
566575
case 9: __TIM9_CLK_ENABLE(); break;
576+
#endif
577+
#if defined(TIM10)
567578
case 10: __TIM10_CLK_ENABLE(); break;
579+
#endif
580+
#if defined(TIM11)
568581
case 11: __TIM11_CLK_ENABLE(); break;
582+
#endif
569583
#if defined(TIM12)
570584
case 12: __TIM12_CLK_ENABLE(); break;
571585
#endif
@@ -575,6 +589,15 @@ STATIC mp_obj_t pyb_timer_init_helper(pyb_timer_obj_t *self, mp_uint_t n_args, c
575589
#if defined(TIM14)
576590
case 14: __TIM14_CLK_ENABLE(); break;
577591
#endif
592+
#if defined(TIM15)
593+
case 15: __TIM15_CLK_ENABLE(); break;
594+
#endif
595+
#if defined(TIM16)
596+
case 16: __TIM16_CLK_ENABLE(); break;
597+
#endif
598+
#if defined(TIM17)
599+
case 17: __TIM17_CLK_ENABLE(); break;
600+
#endif
578601
}
579602

580603
// 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
584607

585608
// init TIM
586609
HAL_TIM_Base_Init(&self->tim);
610+
#if defined(IS_TIM_ADVANCED_INSTANCE)
587611
if (IS_TIM_ADVANCED_INSTANCE(self->tim.Instance)) {
612+
#elif defined(IS_TIM_BREAK_INSTANCE)
613+
if (IS_TIM_BREAK_INSTANCE(self->tim.Instance)) {
614+
#else
615+
if (0) {
616+
#endif
588617
config_deadtime(self, args[6].u_int);
589618
}
590619
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,
617646
tim->is_32bit = false;
618647

619648
switch (tim->tim_id) {
649+
#if defined(MCU_SERIES_F4) || defined(MCU_SERIES_F7)
620650
case 1: tim->tim.Instance = TIM1; tim->irqn = TIM1_UP_TIM10_IRQn; break;
651+
#elif defined(MCU_SERIES_L4)
652+
case 1: tim->tim.Instance = TIM1; tim->irqn = TIM1_UP_TIM16_IRQn; break;
653+
#endif
621654
case 2: tim->tim.Instance = TIM2; tim->irqn = TIM2_IRQn; tim->is_32bit = true; break;
622655
case 3: tim->tim.Instance = TIM3; tim->irqn = TIM3_IRQn; break;
623656
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,
629662
case 7: tim->tim.Instance = TIM7; tim->irqn = TIM7_IRQn; break;
630663
#endif
631664
#if defined(TIM8)
665+
#if defined(MCU_SERIES_F4) || defined(MCU_SERIES_F7)
632666
case 8: tim->tim.Instance = TIM8; tim->irqn = TIM8_UP_TIM13_IRQn; break;
667+
#elif defined(MCU_SERIES_L4)
668+
case 8: tim->tim.Instance = TIM8; tim->irqn = TIM8_UP_IRQn; break;
633669
#endif
670+
#endif
671+
#if defined(TIM9)
634672
case 9: tim->tim.Instance = TIM9; tim->irqn = TIM1_BRK_TIM9_IRQn; break;
673+
#endif
674+
#if defined(TIM10)
635675
case 10: tim->tim.Instance = TIM10; tim->irqn = TIM1_UP_TIM10_IRQn; break;
676+
#endif
677+
#if defined(TIM11)
636678
case 11: tim->tim.Instance = TIM11; tim->irqn = TIM1_TRG_COM_TIM11_IRQn; break;
679+
#endif
637680
#if defined(TIM12)
638681
case 12: tim->tim.Instance = TIM12; tim->irqn = TIM8_BRK_TIM12_IRQn; break;
639682
#endif
@@ -643,6 +686,15 @@ STATIC mp_obj_t pyb_timer_make_new(const mp_obj_type_t *type, mp_uint_t n_args,
643686
#if defined(TIM14)
644687
case 14: tim->tim.Instance = TIM14; tim->irqn = TIM8_TRG_COM_TIM14_IRQn; break;
645688
#endif
689+
#if defined(TIM15)
690+
case 15: tim->tim.Instance = TIM15; tim->irqn = TIM1_BRK_TIM15_IRQn; break;
691+
#endif
692+
#if defined(TIM16)
693+
case 16: tim->tim.Instance = TIM16; tim->irqn = TIM1_UP_TIM16_IRQn; break;
694+
#endif
695+
#if defined(TIM17)
696+
case 17: tim->tim.Instance = TIM17; tim->irqn = TIM1_TRG_COM_TIM17_IRQn; break;
697+
#endif
646698
default: nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_ValueError, "Timer %d does not exist", tim->tim_id));
647699
}
648700

0 commit comments

Comments
 (0)