cubemx中定时器的相关代码设置:
基础定时器只有单次定时模式和连续定时模式两种,在cubemx中打开One Pulse Mode选项就是单次定时模式。需要在main函数中使用HAL_TIM_Base_Start_IT(&htimx)来开启定时器的定时中断。
但是务必记住在开启定时器中断后会立即进入一次中断,因为TIM_TimeBaseInit函数末尾,手动产生了更新事件。所以需要在HAL_TIM_Base_Start_IT(&htimx)之前使用__HAL_TIM_CLEAR_FLAG(&htim6,TIM_IT_UPDATE)清除定时器更新标志位(_TIM_OnePulse模式下相当于会进入两次终端),如果不介意此问题,则不清除此标志位也可。
在stm32f1xx_it.c中定义了中断函数void TIMx_IRQHandler(void),其中又执行了HAL_TIM_IRQHandler(&htim6),在HAL_TIM_IRQHandler(&htim6)中寻找所对应的UEV事件的中断函数。写在tim.c中。
①基础定时器
(1.1)只有一种事件引起中断即计数器上溢时产生的更新事件(UEV)