STM32CubeMx入门教程(3):定时器的使用

控制/MCU

1877人已加入

描述

导语“ 使用STM32CubeMx 生成初始化定时器代码,实现定时器特定定时”

系统要求

•硬件:野火指南者

•软件 CUbeMX & KEIL

•F103总线系统框图

项目文件还是在LED,USART 项目的基础上添加配置代码。

stm32cubemx

我们可以看到共8个定时器,TIM1在APB2总线上,其他的在APB1系统总线上。

第二节CubeMx配置

  • 时钟配置

在CubeMX的时钟配置中,可以看到,TIM1 和TIM2时钟是72MHz。

stm32cubemx

  • 定时器TIME1配置

stm32cubemx

使能TIME1全局中断:

stm32cubemx

  • TIME2的配置

stm32cubemx

TIME1 & TIME2 使用内部时钟源,参数配置的时候通过计算实现1S的定时中断。

定时:(72000000/(7199+1)/(9999+1))= 1Hz。

可以设置TIME2 定时2S,参数设置为:(72000000/(7199+1)/(19999+1))= 0.5Hz

stm32cubemx

使能TIME2全局中断模式:

stm32cubemx

第三节 MDK代码编写

(1)在main.c 中编写定时器中断回调函数,我们只需编写中断回调函数,不需要直接编写中断处理函数。

/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
   if(TIM1 == htim- >Instance){
     HAL_GPIO_TogglePin(LED_G_GPIO_Port,LED_G_Pin);
     printf("\\nTIM1 定时1s 时间到\\t\\n");
     }
     if(TIM2 == htim- >Instance){
       HAL_GPIO_TogglePin(LED_G_GPIO_Port,LED_G_Pin);
       printf("\\nTIM2 定时2s 时间到\\t\\n");
     }
}
/* USER CODE END 4 */

(2)main主函数的while中为空,使用定时中断处理应用。

stm32cubemx

(3)在main.c的主函数初始化代码区中添加 开始定时函数,打开TIME1 & TIME2的定时器。

/* USER CODE BEGIN 2 */
HAL_TIM_Base_Start_IT(&htim1);
HAL_TIM_Base_Start_IT(&htim2);
  /* USER CODE END 2 */

第四节 效果显示

stm32cubemx

总结:(1)cubeMX 定时器的配置很简单,选择内部时钟源,配置定时器定时参数(时间的计算方法套公式就可以),使能定时器中断。

(2)在应用代码中使用HALTIMBaseStartIT(&htim1)打开定时器。

编写定时器定时中断回调函数实现定时应用:

void HALTIMPeriodElapsedCallback(TIM_HandleTypeDef *htim)

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分