diff --git a/cores/arduino/stm32/timer.c b/cores/arduino/stm32/timer.c index c0ce982886..13aa859f42 100644 --- a/cores/arduino/stm32/timer.c +++ b/cores/arduino/stm32/timer.c @@ -1029,199 +1029,341 @@ void attachIntHandle(stimer_t *obj, void (*irqHandle)(stimer_t *)) /* TIMx IRQ HANDLER */ /******************************************************************************/ +#if defined(TIM1_BASE) /** - * @brief TIM1 & TIM10 irq handler + * @brief TIM1 IRQHandler common with TIM10 and TIM16 on some STM32F1xx * @param None * @retval None */ -void TIM1_UP_TIM10_IRQHandler(void) +void TIM1_IRQHandler(void) { if(timer_handles[0] != NULL) { HAL_TIM_IRQHandler(timer_handles[0]); } +#if defined(STM32F1xx) || defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx) +#if defined (TIM10_BASE) if(timer_handles[9] != NULL) { HAL_TIM_IRQHandler(timer_handles[9]); } +#endif +#endif + +#if defined(STM32F1xx) || defined(STM32F3xx) || defined(STM32L4xx) +#if defined (TIM16_BASE) + if(timer_handles[15] != NULL) { + HAL_TIM_IRQHandler(timer_handles[15]); + } +#endif +#endif } +#endif //TIM1_BASE +#if defined(TIM2_BASE) +/** + * @brief TIM2 IRQHandler + * @param None + * @retval None + */ +void TIM2_IRQHandler(void) +{ + if(timer_handles[1] != NULL) { + HAL_TIM_IRQHandler(timer_handles[1]); + } +} +#endif //TIM2_BASE +#if defined(TIM3_BASE) /** - * @brief TIM1 & TIM9 irq handler + * @brief TIM3 IRQHandler * @param None * @retval None */ -void TIM1_BRK_TIM9_IRQHandler(void) +void TIM3_IRQHandler(void) { - if(timer_handles[0] != NULL) { - HAL_TIM_IRQHandler(timer_handles[0]); + if(timer_handles[2] != NULL) { + HAL_TIM_IRQHandler(timer_handles[2]); } +} +#endif //TIM3_BASE - if(timer_handles[8] != NULL) { - HAL_TIM_IRQHandler(timer_handles[8]); +#if defined(TIM4_BASE) +/** + * @brief TIM4 IRQHandler + * @param None + * @retval None + */ +void TIM4_IRQHandler(void) +{ + if(timer_handles[3] != NULL) { + HAL_TIM_IRQHandler(timer_handles[3]); } } +#endif //TIM4_BASE +#if defined(TIM5_BASE) /** - * @brief TIM1 & TIM11 irq handler + * @brief TIM5 IRQHandler * @param None * @retval None */ -void TIM1_TRG_COM_TIM11_IRQHandler(void) +void TIM5_IRQHandler(void) { - if(timer_handles[0] != NULL) { - HAL_TIM_IRQHandler(timer_handles[0]); + if(timer_handles[4] != NULL) { + HAL_TIM_IRQHandler(timer_handles[4]); } +} +#endif //TIM5_BASE - if(timer_handles[10] != NULL) { - HAL_TIM_IRQHandler(timer_handles[10]); +#if defined(TIM6_BASE) +/** + * @brief TIM6 IRQHandler + * @param None + * @retval None + */ +void TIM6_IRQHandler(void) +{ + if(timer_handles[5] != NULL) { + HAL_TIM_IRQHandler(timer_handles[5]); } } +#endif //TIM6_BASE +#if defined(TIM7_BASE) /** - * @brief TIM1 irq handler + * @brief TIM7 IRQHandler * @param None * @retval None */ -void TIM1_CC_IRQHandler(void) +void TIM7_IRQHandler(void) { - if(timer_handles[0] != NULL) { - HAL_TIM_IRQHandler(timer_handles[0]); + if(timer_handles[6] != NULL) { + HAL_TIM_IRQHandler(timer_handles[6]); } } +#endif //TIM7_BASE +#if defined(TIM8_BASE) /** - * @brief TIM2 irq handler + * @brief TIM8 IRQHandler * @param None * @retval None */ -void TIM2_IRQHandler(void) +void TIM8_IRQHandler(void) { - if(timer_handles[1] != NULL) { - HAL_TIM_IRQHandler(timer_handles[1]); + if(timer_handles[7] != NULL) { + HAL_TIM_IRQHandler(timer_handles[7]); } + +#if defined(STM32F1xx) || defined(STM32F2xx) ||defined(STM32F4xx) || defined(STM32F7xx) + if(timer_handles[12] != NULL) { + HAL_TIM_IRQHandler(timer_handles[12]); + } +#endif } +#endif //TIM8_BASE +#if defined(TIM9_BASE) /** - * @brief TIM3 irq handler + * @brief TIM9 IRQHandler * @param None * @retval None */ -void TIM3_IRQHandler(void) +void TIM9_IRQHandler(void) { - if(timer_handles[2] != NULL) { - HAL_TIM_IRQHandler(timer_handles[2]); + if(timer_handles[8] != NULL) { + HAL_TIM_IRQHandler(timer_handles[8]); } } +#endif //TIM9_BASE +#if defined(TIM10_BASE) +#if !defined(STM32F1xx) && !defined(STM32F2xx) && !defined(STM32F4xx) && !defined(STM32F7xx) /** - * @brief TIM4 irq handler + * @brief TIM10 IRQHandler * @param None * @retval None */ -void TIM4_IRQHandler(void) +void TIM10_IRQHandler(void) { - if(timer_handles[3] != NULL) { - HAL_TIM_IRQHandler(timer_handles[3]); + if(timer_handles[9] != NULL) { + HAL_TIM_IRQHandler(timer_handles[9]); } } +#endif +#endif //TIM10_BASE +#if defined(TIM11_BASE) /** - * @brief TIM5 irq handler + * @brief TIM11 IRQHandler * @param None * @retval None */ -void TIM5_IRQHandler(void) +void TIM11_IRQHandler(void) { - if(timer_handles[4] != NULL) { - HAL_TIM_IRQHandler(timer_handles[4]); + if(timer_handles[10] != NULL) { + HAL_TIM_IRQHandler(timer_handles[10]); } } +#endif //TIM11_BASE +#if defined(TIM12_BASE) /** - * @brief TIM6 irq handler + * @brief TIM12 IRQHandler * @param None * @retval None */ -void TIM6_DAC_IRQHandler(void) +void TIM12_IRQHandler(void) { - if(timer_handles[5] != NULL) { - HAL_TIM_IRQHandler(timer_handles[5]); + if(timer_handles[11] != NULL) { + HAL_TIM_IRQHandler(timer_handles[11]); } } +#endif //TIM12_BASE +#if defined(TIM13_BASE) +#if !defined(STM32F1xx) && !defined(STM32F2xx) && !defined(STM32F4xx) && !defined(STM32F7xx) /** - * @brief TIM7 irq handler + * @brief TIM13 IRQHandler * @param None * @retval None */ -void TIM7_IRQHandler(void) +void TIM13_IRQHandler(void) { - if(timer_handles[6] != NULL) { - HAL_TIM_IRQHandler(timer_handles[6]); + if(timer_handles[12] != NULL) { + HAL_TIM_IRQHandler(timer_handles[12]); } } +#endif +#endif //TIM13_BASE +#if defined(TIM14_BASE) /** - * @brief TIM8 & TIM13 irq handler + * @brief TIM14 IRQHandler * @param None * @retval None */ -void TIM8_UP_TIM13_IRQHandler(void) +void TIM14_IRQHandler(void) { - if(timer_handles[7] != NULL) { - HAL_TIM_IRQHandler(timer_handles[7]); + if(timer_handles[13] != NULL) { + HAL_TIM_IRQHandler(timer_handles[13]); } +} +#endif //TIM14_BASE - if(timer_handles[12] != NULL) { - HAL_TIM_IRQHandler(timer_handles[12]); +#if defined(TIM15_BASE) +/** + * @brief TIM15 IRQHandler + * @param None + * @retval None + */ +void TIM15_IRQHandler(void) +{ + if(timer_handles[14] != NULL) { + HAL_TIM_IRQHandler(timer_handles[14]); + } +} +#endif //TIM15_BASE + +#if defined(TIM16_BASE) +#if !defined(STM32F1xx) && !defined(STM32F3xx) && !defined(STM32L4xx) +/** + * @brief TIM16 IRQHandler + * @param None + * @retval None + */ +void TIM16_IRQHandler(void) +{ + if(timer_handles[15] != NULL) { + HAL_TIM_IRQHandler(timer_handles[15]); } } +#endif +#endif //TIM16_BASE +#if defined(TIM17_BASE) +/** + * @brief TIM17 IRQHandler + * @param None + * @retval None + */ +void TIM17_IRQHandler(void) +{ + if(timer_handles[16] != NULL) { + HAL_TIM_IRQHandler(timer_handles[16]); + } +} +#endif //TIM17_BASE +#if defined(TIM18_BASE) /** - * @brief TIM8 & TIM12 irq handler + * @brief TIM18 IRQHandler * @param None * @retval None */ -void TIM8_BRK_TIM12_IRQHandler(void) +void TIM18_IRQHandler(void) { - if(timer_handles[7] != NULL) { - HAL_TIM_IRQHandler(timer_handles[7]); + if(timer_handles[17] != NULL) { + HAL_TIM_IRQHandler(timer_handles[17]); } +} +#endif //TIM18_BASE - if(timer_handles[11] != NULL) { - HAL_TIM_IRQHandler(timer_handles[11]); +#if defined(TIM19_BASE) +/** + * @brief TIM19 IRQHandler + * @param None + * @retval None + */ +void TIM19_IRQHandler(void) +{ + if(timer_handles[18] != NULL) { + HAL_TIM_IRQHandler(timer_handles[18]); } } +#endif //TIM19_BASE +#if defined(TIM20_BASE) /** - * @brief TIM8 & TIM14 irq handler + * @brief TIM20 IRQHandler * @param None * @retval None */ -void TIM8_TRG_COM_TIM14_IRQHandler(void) +void TIM20_IRQHandler(void) { - if(timer_handles[7] != NULL) { - HAL_TIM_IRQHandler(timer_handles[7]); + if(timer_handles[19] != NULL) { + HAL_TIM_IRQHandler(timer_handles[19]); } +} +#endif //TIM20_BASE - if(timer_handles[13] != NULL) { - HAL_TIM_IRQHandler(timer_handles[13]); +#if defined(TIM21_BASE) +/** + * @brief TIM21 IRQHandler + * @param None + * @retval None + */ +void TIM21_IRQHandler(void) +{ + if(timer_handles[20] != NULL) { + HAL_TIM_IRQHandler(timer_handles[20]); } } +#endif //TIM21_BASE +#if defined(TIM22_BASE) /** - * @brief TIM8 irq handler + * @brief TIM22 IRQHandler * @param None * @retval None */ -void TIM8_CC_IRQHandler(void) +void TIM22_IRQHandler(void) { - if(timer_handles[7] != NULL) { - HAL_TIM_IRQHandler(timer_handles[7]); + if(timer_handles[21] != NULL) { + HAL_TIM_IRQHandler(timer_handles[21]); } } +#endif //TIM22_BASE /** * @} diff --git a/cores/arduino/stm32/timer.h b/cores/arduino/stm32/timer.h index a73ea80383..b8f2468a1f 100644 --- a/cores/arduino/stm32/timer.h +++ b/cores/arduino/stm32/timer.h @@ -78,42 +78,59 @@ struct timer_s{ #if defined(TIM1_BASE) && !defined(TIM1_IRQn) #if defined(STM32F0xx) #define TIM1_IRQn TIM1_BRK_UP_TRG_COM_IRQn -#elif defined(STM32F1xx) || defined(STM32F3xx) || defined(STM32L4xx) +#define TIM1_IRQHandler TIM1_BRK_UP_TRG_COM_IRQHandler +#elif defined(STM32F1xx) #define TIM1_IRQn TIM1_UP_TIM16_IRQn +#if !defined (TIM10_BASE) +#define TIM1_IRQHandler TIM1_UP_TIM16_IRQHandler +#elif defined (TIM10_BASE) +#define TIM1_IRQHandler TIM1_UP_TIM10_IRQHandler +#endif +#elif defined(STM32F3xx) || defined(STM32L4xx) +#define TIM1_IRQn TIM1_UP_TIM16_IRQn +#define TIM1_IRQHandler TIM1_UP_TIM16_IRQHandler #elif defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx) #define TIM1_IRQn TIM1_UP_TIM10_IRQn +#define TIM1_IRQHandler TIM1_UP_TIM10_IRQHandler #endif #endif #if defined(TIM6_BASE) && !defined(TIM6_IRQn) #if !defined(STM32F1xx) && !defined(STM32L1xx) #define TIM6_IRQn TIM6_DAC_IRQn +#define TIM6_IRQHandler TIM6_DAC_IRQHandler #endif #endif #if defined(TIM8_BASE) && !defined(TIM8_IRQn) #if defined(STM32F1xx) || defined(STM32F2xx) ||defined(STM32F4xx) || defined(STM32F7xx) #define TIM8_IRQn TIM8_UP_TIM13_IRQn +#define TIM8_IRQHandler TIM8_UP_TIM13_IRQHandler #elif defined(STM32F3xx) || defined(STM32L4xx) #define TIM8_IRQn TIM8_UP_IRQn +#define TIM8_IRQHandler TIM8_UP_IRQHandler #endif #endif #if defined(TIM9_BASE) && !defined(TIM9_IRQn) #if defined(STM32F1xx) || defined(STM32F2xx) ||defined(STM32F4xx) || defined(STM32F7xx) #define TIM9_IRQn TIM1_BRK_TIM9_IRQn +#define TIM9_IRQHandler TIM1_BRK_TIM9_IRQHandler #endif #endif #if defined(TIM10_BASE) && !defined(TIM10_IRQn) #if defined(STM32F1xx) || defined(STM32F2xx) ||defined(STM32F4xx) || defined(STM32F7xx) #define TIM10_IRQn TIM1_UP_TIM10_IRQn +//TIM10_IRQHandler is mapped on TIM1_IRQHandler when TIM10_IRQn is not defined #endif #endif #if defined(TIM11_BASE) && !defined(TIM11_IRQn) #if defined(STM32F1xx) || defined(STM32F2xx) ||defined(STM32F4xx) || defined(STM32F7xx) #define TIM11_IRQn TIM1_TRG_COM_TIM11_IRQn +#define TIM11_IRQHandler TIM1_TRG_COM_TIM11_IRQHandler #endif #endif #if defined(TIM12_BASE) && !defined(TIM12_IRQn) #if defined(STM32F1xx) || defined(STM32F2xx) ||defined(STM32F4xx) || defined(STM32F7xx) #define TIM12_IRQn TIM8_BRK_TIM12_IRQn +#define TIM12_IRQHandler TIM8_BRK_TIM12_IRQHandler #endif #endif #if defined(TIM13_BASE) && !defined(TIM13_IRQn) @@ -124,31 +141,37 @@ struct timer_s{ #if defined(TIM14_BASE) && !defined(TIM14_IRQn) #if defined(STM32F1xx) || defined(STM32F2xx) ||defined(STM32F4xx) || defined(STM32F7xx) #define TIM14_IRQn TIM8_TRG_COM_TIM14_IRQn +#define TIM14_IRQHandler TIM8_TRG_COM_TIM14_IRQHandler #endif #endif #if defined(TIM15_BASE) && !defined(TIM15_IRQn) #if defined(STM32F1xx) || defined(STM32F3xx) || defined(STM32L4xx) #define TIM15_IRQn TIM1_BRK_TIM15_IRQn +#define TIM15_IRQHandler TIM1_BRK_TIM15_IRQHandler #endif #endif #if defined(TIM16_BASE) && !defined(TIM16_IRQn) #if defined(STM32F1xx) || defined(STM32F3xx) || defined(STM32L4xx) #define TIM16_IRQn TIM1_UP_TIM16_IRQn +//TIM16_IRQHandler is mapped on TIM1_IRQHandler when TIM16_IRQn is not defined #endif #endif #if defined(TIM17_BASE) && !defined(TIM17_IRQn) #if defined(STM32F1xx) || defined(STM32F3xx) || defined(STM32L4xx) #define TIM17_IRQn TIM1_TRG_COM_TIM17_IRQn +#define TIM17_IRQHandler TIM1_TRG_COM_TIM17_IRQHandler #endif #endif #if defined(TIM18_BASE) && !defined(TIM18_IRQn) #if defined(STM32F3xx) #define TIM18_IRQn TIM18_DAC2_IRQn +#define TIM18_IRQHandler TIM18_DAC2_IRQHandler #endif #endif #if defined(TIM20_BASE) && !defined(TIM20_IRQn) #if defined(STM32F3xx) #define TIM20_IRQn TIM20_UP_IRQn +#define TIM20_IRQHandler TIM20_UP_IRQHandler #endif #endif