Skip to content

Commit 3e93553

Browse files
committed
mcu/stm32xx: HAL Timer interrupt cleanup
Interrupts for used for timers differ from MCU to MCU. hal_timer.c had a lot of preprocessor conditions to select correct interrupt number name to be used for HAL timer. With each new MCU conditions were modified. Now MCU specific mcu/stm32_hal.h defines interrupts name that deviate from common practice while stm32_common/stm23_hal.h provides defaults that are most frequently found. Unified defines STM32_HAL_TIMER_TIMx_IRQ are used in hal_timer.c simplifying preprocess conditions. Signed-off-by: Jerzy Kasenberg <jerzy.kasenberg@codecoup.pl>
1 parent 64e4e36 commit 3e93553

File tree

10 files changed

+119
-57
lines changed

10 files changed

+119
-57
lines changed

hw/mcu/stm/stm32_common/include/stm32_common/stm32_hal.h

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,61 @@ extern "C" {
4343
uint32_t stm32_hal_timer_get_freq(void *timx);
4444
void stm32_periph_create(void);
4545

46+
#ifndef STM32_HAL_TIMER_TIM1_IRQ
47+
#define STM32_HAL_TIMER_TIM1_IRQ TIM1_UP_TIM10_IRQn
48+
#endif
49+
#ifndef STM32_HAL_TIMER_TIM2_IRQ
50+
#define STM32_HAL_TIMER_TIM2_IRQ TIM2_IRQn
51+
#endif
52+
#ifndef STM32_HAL_TIMER_TIM3_IRQ
53+
#define STM32_HAL_TIMER_TIM3_IRQ TIM3_IRQn
54+
#endif
55+
#ifndef STM32_HAL_TIMER_TIM4_IRQ
56+
#define STM32_HAL_TIMER_TIM4_IRQ TIM4_IRQn
57+
#endif
58+
#ifndef STM32_HAL_TIMER_TIM6_IRQ
59+
#define STM32_HAL_TIMER_TIM6_IRQ TIM6_IRQn
60+
#endif
61+
#ifndef STM32_HAL_TIMER_TIM7_IRQ
62+
#define STM32_HAL_TIMER_TIM7_IRQ TIM7_IRQn
63+
#endif
64+
#ifndef STM32_HAL_TIMER_TIM8_IRQ
65+
#define STM32_HAL_TIMER_TIM8_IRQ TIM8_UP_TIM13_IRQn
66+
#endif
67+
#ifndef STM32_HAL_TIMER_TIM9_IRQ
68+
#define STM32_HAL_TIMER_TIM9_IRQ TIM1_BRK_TIM9_IRQn
69+
#endif
70+
#ifndef STM32_HAL_TIMER_TIM10_IRQ
71+
#define STM32_HAL_TIMER_TIM10_IRQ TIM1_UP_TIM10_IRQn
72+
#endif
73+
#ifndef STM32_HAL_TIMER_TIM11_IRQ
74+
#define STM32_HAL_TIMER_TIM11_IRQ TIM1_TRG_COM_TIM11_IRQn
75+
#endif
76+
#ifndef STM32_HAL_TIMER_TIM12_IRQ
77+
#define STM32_HAL_TIMER_TIM12_IRQ TIM8_BRK_TIM12_IRQn
78+
#endif
79+
#ifndef STM32_HAL_TIMER_TIM13_IRQ
80+
#define STM32_HAL_TIMER_TIM13_IRQ TIM8_UP_TIM13_IRQn
81+
#endif
82+
#ifndef STM32_HAL_TIMER_TIM14_IRQ
83+
#define STM32_HAL_TIMER_TIM14_IRQ TIM8_TRG_COM_TIM14_IRQn
84+
#endif
85+
#ifndef STM32_HAL_TIMER_TIM15_IRQ
86+
#define STM32_HAL_TIMER_TIM15_IRQ TIM1_BRK_TIM15_IRQn
87+
#endif
88+
#ifndef STM32_HAL_TIMER_TIM16_IRQ
89+
#define STM32_HAL_TIMER_TIM16_IRQ TIM1_UP_TIM16_IRQn
90+
#endif
91+
#ifndef STM32_HAL_TIMER_TIM17_IRQ
92+
#define STM32_HAL_TIMER_TIM17_IRQ TIM1_TRG_COM_TIM17_IRQn
93+
#endif
94+
#ifndef STM32_HAL_TIMER_TIM21_IRQ
95+
#define STM32_HAL_TIMER_TIM21_IRQ TIM21_IRQn
96+
#endif
97+
#ifndef STM32_HAL_TIMER_TIM22_IRQ
98+
#define STM32_HAL_TIMER_TIM22_IRQ TIM22_IRQn
99+
#endif
100+
46101
#ifdef __cplusplus
47102
}
48103
#endif

hw/mcu/stm/stm32_common/src/hal_timer.c

Lines changed: 28 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -193,138 +193,109 @@ stm32_hw_setup(int num, TIM_TypeDef *regs)
193193

194194
#ifdef TIM1
195195
if (regs == TIM1) {
196-
#if MYNEWT_VAL(MCU_STM32F0)
197-
stm32_tmr_reg_irq(TIM1_CC_IRQn, func);
198-
#elif MYNEWT_VAL(MCU_STM32F3) || MYNEWT_VAL(MCU_STM32L4) || MYNEWT_VAL(MCU_STM32WB)
199-
stm32_tmr_reg_irq(TIM1_UP_TIM16_IRQn, func);
200-
#elif MYNEWT_VAL(MCU_STM32U5)
201-
stm32_tmr_reg_irq(TIM1_UP_IRQn, func);
202-
#else
203-
stm32_tmr_reg_irq(TIM1_UP_TIM10_IRQn, func);
204-
#endif
196+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM1_IRQ, func);
205197
__HAL_RCC_TIM1_CLK_ENABLE();
206198
}
207199
#endif
208200
#ifdef TIM2
209201
if (regs == TIM2) {
210-
stm32_tmr_reg_irq(TIM2_IRQn, func);
202+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM2_IRQ, func);
211203
__HAL_RCC_TIM2_CLK_ENABLE();
212204
}
213205
#endif
214206
#ifdef TIM3
215207
if (regs == TIM3) {
216-
stm32_tmr_reg_irq(TIM3_IRQn, func);
208+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM3_IRQ, func);
217209
__HAL_RCC_TIM3_CLK_ENABLE();
218210
}
219211
#endif
220212
#ifdef TIM4
221213
if (regs == TIM4) {
222-
stm32_tmr_reg_irq(TIM4_IRQn, func);
214+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM4_IRQ, func);
223215
__HAL_RCC_TIM4_CLK_ENABLE();
224216
}
225217
#endif
218+
#ifdef TIM6
219+
if (regs == TIM6) {
220+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM6_IRQ, func);
221+
__HAL_RCC_TIM6_CLK_ENABLE();
222+
}
223+
#endif
224+
#ifdef TIM7
225+
if (regs == TIM7) {
226+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM7_IRQ, func);
227+
__HAL_RCC_TIM7_CLK_ENABLE();
228+
}
229+
#endif
226230
#ifdef TIM8
227231
if (regs == TIM8) {
228-
stm32_tmr_reg_irq(TIM8_CC_IRQn, func);
229-
#if MYNEWT_VAL(MCU_STM32F3) || MYNEWT_VAL(MCU_STM32L4) || MYNEWT_VAL(MCU_STM32WB) || MYNEWT_VAL(MCU_STM32U5)
230-
stm32_tmr_reg_irq(TIM8_UP_IRQn, func);
231-
#else
232-
stm32_tmr_reg_irq(TIM8_UP_TIM13_IRQn, func);
233-
#endif
232+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM8_IRQ, func);
234233
__HAL_RCC_TIM8_CLK_ENABLE();
235234
}
236235
#endif
237236
#ifdef TIM9
238237
if (regs == TIM9) {
239-
#if MYNEWT_VAL(MCU_STM32L1)
240-
stm32_tmr_reg_irq(TIM9_IRQn, func);
241-
#else
242-
stm32_tmr_reg_irq(TIM1_BRK_TIM9_IRQn, func);
243-
#endif
238+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM9_IRQ, func);
244239
__HAL_RCC_TIM9_CLK_ENABLE();
245240
}
246241
#endif
247242
#ifdef TIM10
248243
if (regs == TIM10) {
249-
#if MYNEWT_VAL(MCU_STM32L1) || MYNEWT_VAL(MCU_STM32L4) || MYNEWT_VAL(MCU_STM32WB)
250-
stm32_tmr_reg_irq(TIM10_IRQn, func);
251-
#else
252-
stm32_tmr_reg_irq(TIM1_UP_TIM10_IRQn, func);
253-
#endif
244+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM10_IRQ, func);
254245
__HAL_RCC_TIM10_CLK_ENABLE();
255246
}
256247
#endif
257248
#ifdef TIM11
258249
if (regs == TIM11) {
259-
#if MYNEWT_VAL(MCU_STM32L1)
260-
stm32_tmr_reg_irq(TIM11_IRQn, func);
261-
#else
262-
stm32_tmr_reg_irq(TIM1_TRG_COM_TIM11_IRQn, func);
263-
#endif
250+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM11_IRQ, func);
264251
__HAL_RCC_TIM11_CLK_ENABLE();
265252
}
266253
#endif
267254
#ifdef TIM12
268255
if (regs == TIM12) {
269-
stm32_tmr_reg_irq(TIM8_BRK_TIM12_IRQn, func);
256+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM12_IRQ, func);
270257
__HAL_RCC_TIM12_CLK_ENABLE();
271258
}
272259
#endif
273260
#ifdef TIM13
274261
if (regs == TIM13) {
275-
stm32_tmr_reg_irq(TIM8_UP_TIM13_IRQn, func);
262+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM13_IRQ, func);
276263
__HAL_RCC_TIM13_CLK_ENABLE();
277264
}
278265
#endif
279266
#ifdef TIM14
280267
if (regs == TIM14) {
281-
#if MYNEWT_VAL(MCU_STM32F0)
282-
stm32_tmr_reg_irq(TIM14_IRQn, func);
283-
#else
284-
stm32_tmr_reg_irq(TIM8_TRG_COM_TIM14_IRQn, func);
285-
#endif
268+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM14_IRQ, func);
286269
__HAL_RCC_TIM14_CLK_ENABLE();
287270
}
288271
#endif
289272
#ifdef TIM15
290273
if (regs == TIM15) {
291-
#if MYNEWT_VAL(MCU_STM32F0) || MYNEWT_VAL(MCU_STM32H7) || MYNEWT_VAL(MCU_STM32U5)
292-
stm32_tmr_reg_irq(TIM15_IRQn, func);
293-
#else
294-
stm32_tmr_reg_irq(TIM1_BRK_TIM15_IRQn, func);
295-
#endif
274+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM15_IRQ, func);
296275
__HAL_RCC_TIM15_CLK_ENABLE();
297276
}
298277
#endif
299278
#ifdef TIM16
300279
if (regs == TIM16) {
301-
#if MYNEWT_VAL(MCU_STM32F0) || MYNEWT_VAL(MCU_STM32H7) || MYNEWT_VAL(MCU_STM32U5)
302-
stm32_tmr_reg_irq(TIM16_IRQn, func);
303-
#else
304-
stm32_tmr_reg_irq(TIM1_UP_TIM16_IRQn, func);
305-
#endif
280+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM16_IRQ, func);
306281
__HAL_RCC_TIM16_CLK_ENABLE();
307282
}
308283
#endif
309284
#ifdef TIM17
310285
if (regs == TIM17) {
311-
#if MYNEWT_VAL(MCU_STM32F0) || MYNEWT_VAL(MCU_STM32H7) || MYNEWT_VAL(MCU_STM32U5)
312-
stm32_tmr_reg_irq(TIM17_IRQn, func);
313-
#else
314-
stm32_tmr_reg_irq(TIM1_TRG_COM_TIM17_IRQn, func);
315-
#endif
286+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM17_IRQ, func);
316287
__HAL_RCC_TIM17_CLK_ENABLE();
317288
}
318289
#endif
319290
#ifdef TIM21
320291
if (regs == TIM21) {
321-
stm32_tmr_reg_irq(TIM21_IRQn, func);
292+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM21_IRQ, func);
322293
__HAL_RCC_TIM21_CLK_ENABLE();
323294
}
324295
#endif
325296
#ifdef TIM22
326297
if (regs == TIM22) {
327-
stm32_tmr_reg_irq(TIM22_IRQn, func);
298+
stm32_tmr_reg_irq(STM32_HAL_TIMER_TIM22_IRQ, func);
328299
__HAL_RCC_TIM22_CLK_ENABLE();
329300
}
330301
#endif

hw/mcu/stm/stm32f0xx/include/mcu/stm32_hal.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,12 @@ struct stm32_hal_spi_cfg {
7575

7676
#define STM32_HAL_TIMER_MAX (3)
7777

78+
#define STM32_HAL_TIMER_TIM1_IRQ TIM1_CC_IRQn
79+
#define STM32_HAL_TIMER_TIM14_IRQ TIM14_IRQn
80+
#define STM32_HAL_TIMER_TIM15_IRQ TIM15_IRQn
81+
#define STM32_HAL_TIMER_TIM16_IRQ TIM16_IRQn
82+
#define STM32_HAL_TIMER_TIM17_IRQ TIM17_IRQn
83+
7884
/* hal_flash */
7985
#include "stm32f0xx_hal_def.h"
8086
#include "stm32f0xx_hal_flash.h"

hw/mcu/stm/stm32f3xx/include/mcu/stm32_hal.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ struct stm32_hal_spi_cfg {
7575

7676
#define STM32_HAL_TIMER_MAX (3)
7777

78+
#define STM32_HAL_TIMER_TIM1_IRQ TIM1_UP_TIM16_IRQn
79+
#define STM32_HAL_TIMER_TIM6_IRQ TIM6_DAC_IRQn
80+
#define STM32_HAL_TIMER_TIM8_IRQ TIM8_UP_IRQn
81+
7882
/* hal_flash */
7983
#include "stm32f3xx_hal_def.h"
8084
#include "stm32f3xx_hal_flash.h"

hw/mcu/stm/stm32f7xx/include/mcu/stm32_hal.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ struct stm32_hal_spi_cfg {
7777

7878
#define STM32_HAL_TIMER_MAX (3)
7979

80+
#define STM32_HAL_TIMER_TIM6_IRQ TIM6_DAC_IRQn
81+
8082
/* hw/drivers/trng */
8183
#include "stm32f7xx_hal_rng.h"
8284

hw/mcu/stm/stm32h7xx/include/mcu/stm32_hal.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ struct stm32_hal_spi_cfg {
7272

7373
#define STM32_HAL_TIMER_MAX (3)
7474

75+
#define STM32_HAL_TIMER_TIM15_IRQ TIM15_IRQn
76+
#define STM32_HAL_TIMER_TIM16_IRQ TIM16_IRQn
77+
#define STM32_HAL_TIMER_TIM17_IRQ TIM17_IRQn
78+
7579
/* hw/drivers/trng */
7680
#include "stm32h7xx_hal_rng.h"
7781

hw/mcu/stm/stm32l1xx/include/mcu/stm32_hal.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ struct stm32_hal_spi_cfg {
7373

7474
#define STM32_HAL_TIMER_MAX (3)
7575

76+
#define STM32_HAL_TIMER_TIM9_IRQ TIM9_IRQn
77+
#define STM32_HAL_TIMER_TIM10_IRQ TIM10_IRQn
78+
#define STM32_HAL_TIMER_TIM11_IRQ TIM11_IRQn
79+
7680
/* hal_flash */
7781
#include "stm32l1xx_hal_def.h"
7882
#include "stm32l1xx_hal_flash.h"

hw/mcu/stm/stm32l4xx/include/mcu/stm32_hal.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ struct stm32_hal_spi_cfg {
6767

6868
#define STM32_HAL_TIMER_MAX (3)
6969

70+
#define STM32_HAL_TIMER_TIM1_IRQ TIM1_UP_TIM16_IRQn
71+
#define STM32_HAL_TIMER_TIM6_IRQ TIM6_DAC_IRQn
72+
#define STM32_HAL_TIMER_TIM8_IRQ TIM8_UP_IRQn
73+
#define STM32_HAL_TIMER_TIM10_IRQ TIM10_IRQn
74+
75+
7076
#define STM32_HAL_FLASH_INIT() \
7177
do { \
7278
HAL_FLASH_Unlock(); \

hw/mcu/stm/stm32u5xx/include/mcu/stm32_hal.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@ struct stm32_hal_spi_cfg {
6363

6464
#define STM32_HAL_TIMER_MAX (3)
6565

66+
#define STM32_HAL_TIMER_TIM1_IRQ TIM1_UP_IRQn
67+
#define STM32_HAL_TIMER_TIM8_IRQ TIM8_UP_IRQn
68+
#define STM32_HAL_TIMER_TIM15_IRQ TIM15_IRQn
69+
#define STM32_HAL_TIMER_TIM16_IRQ TIM16_IRQn
70+
#define STM32_HAL_TIMER_TIM17_IRQ TIM17_IRQn
71+
6672
#define STM32_HAL_FLASH_INIT() \
6773
do { \
6874
HAL_FLASH_Unlock(); \

hw/mcu/stm/stm32wbxx/include/mcu/stm32_hal.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ struct stm32_hal_spi_cfg {
7272

7373
#define STM32_HAL_TIMER_MAX (3)
7474

75+
#define STM32_HAL_TIMER_TIM1_IRQ TIM1_UP_TIM16_IRQn
76+
#define STM32_HAL_TIMER_TIM8_IRQ TIM8_UP_IRQn
77+
#define STM32_HAL_TIMER_TIM10_IRQ TIM10_IRQn
78+
7579
#define STM32_HAL_FLASH_INIT() \
7680
do { \
7781
HAL_FLASH_Unlock(); \

0 commit comments

Comments
 (0)