@@ -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
0 commit comments