Skip to content

Commit ecf3a1e

Browse files
committed
[fix] 适配TIMER驱动
1 parent 3097b4b commit ecf3a1e

7 files changed

Lines changed: 172 additions & 123 deletions

File tree

bsp/stm32/libraries/HAL_Drivers/drivers/config/n6/tim_config.h

Lines changed: 8 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -27,38 +27,16 @@ extern "C" {
2727
}
2828
#endif /* TIM_DEV_INFO_CONFIG */
2929

30-
#ifdef BSP_USING_TIM11
31-
#ifndef TIM11_CONFIG
32-
#define TIM11_CONFIG \
30+
#ifdef BSP_USING_TIM2
31+
#ifndef TIM2_CONFIG
32+
#define TIM2_CONFIG \
3333
{ \
34-
.tim_handle.Instance = TIM11, \
35-
.tim_irqn = TIM1_TRG_COM_TIM11_IRQn, \
36-
.name = "timer11", \
34+
.tim_handle.Instance = TIM2, \
35+
.tim_irqn = TIM2_IRQn, \
36+
.name = "timer2", \
3737
}
38-
#endif /* TIM11_CONFIG */
39-
#endif /* BSP_USING_TIM11 */
40-
41-
#ifdef BSP_USING_TIM13
42-
#ifndef TIM13_CONFIG
43-
#define TIM13_CONFIG \
44-
{ \
45-
.tim_handle.Instance = TIM13, \
46-
.tim_irqn = TIM8_UP_TIM13_IRQn, \
47-
.name = "timer13", \
48-
}
49-
#endif /* TIM13_CONFIG */
50-
#endif /* BSP_USING_TIM13 */
51-
52-
#ifdef BSP_USING_TIM14
53-
#ifndef TIM14_CONFIG
54-
#define TIM14_CONFIG \
55-
{ \
56-
.tim_handle.Instance = TIM14, \
57-
.tim_irqn = TIM8_TRG_COM_TIM14_IRQn, \
58-
.name = "timer14", \
59-
}
60-
#endif /* TIM14_CONFIG */
61-
#endif /* BSP_USING_TIM14 */
38+
#endif /* TIM2_CONFIG */
39+
#endif /* BSP_USING_TIM2 */
6240

6341
#ifdef __cplusplus
6442
}

bsp/stm32/libraries/HAL_Drivers/drivers/drv_tim.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,9 @@ static void timer_init(struct rt_hwtimer_device *timer, rt_uint32_t state)
407407
{
408408
prescaler_value = (uint32_t)(HAL_RCC_GetPCLK1Freq() * pclk1_doubler / 10000) - 1;
409409
}
410+
#endif
411+
#if defined (SOC_SERIES_STM32N6)
412+
prescaler_value = HAL_RCCEx_GetTIMGFreq() / 1000 /1000;
410413
#endif
411414
tim->Init.Period = 10000 - 1;
412415
tim->Init.Prescaler = prescaler_value;
@@ -420,7 +423,7 @@ static void timer_init(struct rt_hwtimer_device *timer, rt_uint32_t state)
420423
tim->Init.CounterMode = TIM_COUNTERMODE_DOWN;
421424
}
422425
tim->Init.RepetitionCounter = 0;
423-
#if defined(SOC_SERIES_STM32F1) || defined(SOC_SERIES_STM32G4) || defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB)
426+
#if defined(SOC_SERIES_STM32F1) || defined(SOC_SERIES_STM32G4) || defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32N6)
424427
tim->Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
425428
#endif
426429
if (HAL_TIM_Base_Init(tim) != HAL_OK)
@@ -561,7 +564,7 @@ static rt_err_t timer_ctrl(rt_hwtimer_t *timer, rt_uint32_t cmd, void *arg)
561564
|| tim->Instance == TIM17
562565
#endif /* TIM17 */
563566
)
564-
#elif defined(SOC_SERIES_STM32F1) || defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32H7)
567+
#elif defined(SOC_SERIES_STM32F1) || defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32H7) || defined(SOC_SERIES_STM32N6)
565568
if (0)
566569
#else
567570
#error "This driver has not supported this series yet!"
@@ -573,7 +576,11 @@ static rt_err_t timer_ctrl(rt_hwtimer_t *timer, rt_uint32_t cmd, void *arg)
573576
}
574577
else
575578
{
576-
val = HAL_RCC_GetPCLK1Freq() * pclk1_doubler / freq;
579+
#if defined(SOC_SERIES_STM32N6)
580+
val = HAL_RCCEx_GetTIMGFreq() / freq);
581+
#else
582+
val = HAL_RCC_GetPCLK1Freq() * pclk1_doubler / freq;
583+
#endif
577584
}
578585
__HAL_TIM_SET_PRESCALER(tim, val - 1);
579586

bsp/stm32/stm32n657-st-nucleo-app/.config

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ CONFIG_RT_USING_SPI_ISR=y
276276
# CONFIG_RT_USING_VIRTIO is not set
277277
CONFIG_RT_USING_PIN=y
278278
# CONFIG_RT_USING_KTIME is not set
279-
# CONFIG_RT_USING_HWTIMER is not set
279+
CONFIG_RT_USING_HWTIMER=y
280280
# CONFIG_RT_USING_CHERRYUSB is not set
281281
# end of Device Drivers
282282

@@ -1476,6 +1476,8 @@ CONFIG_BSP_USING_PWM1_CH1=y
14761476
CONFIG_BSP_USING_PWM1_CH2=y
14771477
CONFIG_BSP_USING_PWM1_CH3=y
14781478
CONFIG_BSP_USING_PWM1_CH4=y
1479+
CONFIG_BSP_USING_TIM=y
1480+
CONFIG_BSP_USING_TIM2=y
14791481
# CONFIG_BSP_USING_UDID is not set
14801482
# end of On-chip Peripheral Drivers
14811483

bsp/stm32/stm32n657-st-nucleo-app/board/Kconfig

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -100,26 +100,17 @@ menu "On-chip Peripheral Drivers"
100100
default n
101101
endif
102102
endif
103-
103+
104104
menuconfig BSP_USING_TIM
105105
bool "Enable timer"
106106
default n
107107
select RT_USING_HWTIMER
108108
if BSP_USING_TIM
109-
config BSP_USING_TIM11
110-
bool "Enable TIM11"
111-
default n
112-
113-
config BSP_USING_TIM13
114-
bool "Enable TIM13"
115-
default n
116-
117-
config BSP_USING_TIM14
118-
bool "Enable TIM14"
109+
config BSP_USING_TIM2
110+
bool "Enable TIM2"
119111
default n
120112
endif
121113

122-
123114
source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"
124115

125116
endmenu

0 commit comments

Comments
 (0)