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

File tree

1 file changed

+53
-1
lines changed

1 file changed

+53
-1
lines changed

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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy