From fe35011fc5aa35bf8fccd086ab1646b55297aca1 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Sun, 24 Dec 2023 17:52:12 +0800 Subject: [PATCH] [stm32][drv_tim.c] fix errors when TIMx doesn't exist --- .../HAL_Drivers/drivers/drv_config.h | 2 +- .../libraries/HAL_Drivers/drivers/drv_tim.c | 114 +++++++++++++++++- 2 files changed, 109 insertions(+), 7 deletions(-) diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_config.h b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_config.h index 817dee0247..b3ddd75507 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_config.h +++ b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_config.h @@ -13,7 +13,7 @@ #define __DRV_CONFIG_H__ #include -#include +#include #ifdef __cplusplus extern "C" { diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_tim.c b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_tim.c index 629109fd8d..d61fb2751e 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_tim.c +++ b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_tim.c @@ -11,6 +11,7 @@ * 2020-10-14 Dozingfiretruck Porting for stm32wbxx * 2020-11-18 leizhixiong add STM32H7 series support * 2023-08-21 Donocean fix the MCU crash when using timer6 + * 2023-12-24 Meco Man add TIMx existing check */ #include @@ -20,6 +21,64 @@ #define LOG_TAG "drv.tim" #include +#if defined(BSP_USING_TIM1) && !defined(TIM1) +#error "timer1 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM1" +#endif +#if defined(BSP_USING_TIM2) && !defined(TIM2) +#error "timer2 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM2" +#endif +#if defined(BSP_USING_TIM3) && !defined(TIM3) +#error "timer3 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM3" +#endif +#if defined(BSP_USING_TIM4) && !defined(TIM4) +#error "timer4 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM4" +#endif +#if defined(BSP_USING_TIM5) && !defined(TIM5) +#error "timer5 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM5" +#endif +#if defined(BSP_USING_TIM6) && !defined(TIM6) +#error "timer6 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM6" +#endif +#if defined(BSP_USING_TIM7) && !defined(TIM7) +#error "timer7 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM7" +#endif +#if defined(BSP_USING_TIM8) && !defined(TIM8) +#error "timer8 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM8" +#endif +#if defined(BSP_USING_TIM9) && !defined(TIM9) +#error "timer9 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM9" +#endif +#if defined(BSP_USING_TIM10) && !defined(TIM10) +#error "timer10 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM10" +#endif +#if defined(BSP_USING_TIM11) && !defined(TIM11) +#error "timer11 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM11" +#endif +#if defined(BSP_USING_TIM12) && !defined(TIM12) +#error "timer12 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM12" +#endif +#if defined(BSP_USING_TIM13) && !defined(TIM13) +#error "timer13 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM13" +#endif +#if defined(BSP_USING_TIM14) && !defined(TIM14) +#error "timer14 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM14" +#endif +#if defined(BSP_USING_TIM15) && !defined(TIM15) +#error "timer15 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM15" +#endif +#if defined(BSP_USING_TIM16) && !defined(TIM16) +#error "timer16 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM16" +#endif +#if defined(BSP_USING_TIM17) && !defined(TIM17) +#error "timer17 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM17" +#endif +#if defined(BSP_USING_TIM18) && !defined(TIM18) +#error "timer18 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM18" +#endif +#if defined(BSP_USING_TIM19) && !defined(TIM19) +#error "timer19 doesn't exist in this STM32 series, but you enabled the BSP_USING_TIM19" +#endif + /* APBx timer clocks frequency doubler state related to APB1CLKDivider value */ void stm32_tim_pclkx_doubler_get(rt_uint32_t *pclk1_doubler, rt_uint32_t *pclk2_doubler) { @@ -450,22 +509,65 @@ static rt_err_t timer_ctrl(rt_hwtimer_t *timer, rt_uint32_t cmd, void *arg) stm32_tim_pclkx_doubler_get(&pclk1_doubler, &pclk2_doubler); #if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) - if (tim->Instance == TIM1 || tim->Instance == TIM8 || tim->Instance == TIM9 || tim->Instance == TIM10 || tim->Instance == TIM11) + if (0 +#ifdef TIM1 + || tim->Instance == TIM1 +#endif /* TIM1 */ +#ifdef TIM8 + || tim->Instance == TIM8 +#endif /* TIM8 */ +#ifdef TIM9 + || tim->Instance == TIM9 +#endif /* TIM9 */ +#ifdef TIM10 + || tim->Instance == TIM10 +#endif /* TIM10 */ +#ifdef TIM11 + || tim->Instance == TIM11 +#endif /* TIM11 */ + ) #elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G4) - if (tim->Instance == TIM15 || tim->Instance == TIM16 || tim->Instance == TIM17) + if (0 +#ifdef TIM15 + || tim->Instance == TIM15 +#endif /* TIM15 */ +#ifdef TIM16 + || tim->Instance == TIM16 +#endif /* TIM16 */ +#ifdef TIM17 + || tim->Instance == TIM17 +#endif /* TIM17 */ + ) #elif defined(SOC_SERIES_STM32WB) - if (tim->Instance == TIM16 || tim->Instance == TIM17) + if (0 +#ifdef TIM16 + || tim->Instance == TIM16 +#endif /* TIM16 */ +#ifdef TIM17 + || tim->Instance == TIM17 +#endif /* TIM17 */ + ) #elif defined(SOC_SERIES_STM32MP1) - if(tim->Instance == TIM14 || tim->Instance == TIM16 || tim->Instance == TIM17) + if(0 +#ifdef TIM14 + || tim->Instance == TIM14 +#endif /* TIM14 */ +#ifdef TIM16 + || tim->Instance == TIM16 +#endif /* TIM16 */ +#ifdef TIM17 + || tim->Instance == TIM17 +#endif /* TIM17 */ + ) #elif defined(SOC_SERIES_STM32F1) || defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32H7) if (0) #else #error "This driver has not supported this series yet!" -#endif +#endif /* defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) */ { #if !defined(SOC_SERIES_STM32F0) && !defined(SOC_SERIES_STM32G0) val = HAL_RCC_GetPCLK2Freq() * pclk2_doubler / freq; -#endif +#endif /* !defined(SOC_SERIES_STM32F0) && !defined(SOC_SERIES_STM32G0) */ } else {