TIM的设置
时间:10-02
整理:3721RD
点击:
定时器很丰富,主要在以下章节
对应STM32CubeMx
其设置也是相对简单
不过我感觉在这里的设置就不够人性化,一个时钟源,一个溢出方式这两个至少要查看资料,为什么不直接给个要设定的计数周期,然后就自动算出来
定时器多,时钟源也是多的,主要以下
溢出方式
可以推出定时器溢出时间计算方法:Tout=((Counter Period +1)*(Prescaler+1))/(Ft/Internal Clock Division) us.
生成代码后,注意添加中断函数
但它们最终时通过调用回调函数来实现的,所以添加以下代码即可:
设置好了,但并不是定时器就能运行,还需要以下的代码
对应STM32CubeMx
其设置也是相对简单
不过我感觉在这里的设置就不够人性化,一个时钟源,一个溢出方式这两个至少要查看资料,为什么不直接给个要设定的计数周期,然后就自动算出来
定时器多,时钟源也是多的,主要以下
溢出方式
可以推出定时器溢出时间计算方法:Tout=((Counter Period +1)*(Prescaler+1))/(Ft/Internal Clock Division) us.
生成代码后,注意添加中断函数
- /**
- * @brief This function handles TIM3 global interrupt.
- */
- void TIM3_IRQHandler(void)
- {
- /* USER CODE BEGIN TIM3_IRQn 0 */
- /* USER CODE END TIM3_IRQn 0 */
- HAL_TIM_IRQHandler(&htim3);
- /* USER CODE BEGIN TIM3_IRQn 1 */
- /* USER CODE END TIM3_IRQn 1 */
- }
- /**
- * @brief This function handles TIM4 global interrupt.
- */
- void TIM4_IRQHandler(void)
- {
- /* USER CODE BEGIN TIM4_IRQn 0 */
- /* USER CODE END TIM4_IRQn 0 */
- HAL_TIM_IRQHandler(&htim4);
- /* USER CODE BEGIN TIM4_IRQn 1 */
- /* USER CODE END TIM4_IRQn 1 */
- }
但它们最终时通过调用回调函数来实现的,所以添加以下代码即可:
- void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
- {
- extern __IO int32_t OS_TimeMS; //GUI_X.c
- if(htim==(&htim3))
- {//定时器3中断服务函数调用
- OS_TimeMS++;
- }
- else if(htim==(&htim4))
- {//定时器4中断服务函数调用
- GUI_TOUCH_Exec();
- }
- }
设置好了,但并不是定时器就能运行,还需要以下的代码
- void HAL_TIM_Start(void)
- {
- HAL_TIM_Base_Start_IT(&htim3);
- HAL_TIM_Base_Start_IT(&htim4);
- }