STM32CubeMX系列教程3:基本定时器中断
文章目录摘要配置工程配置定时器参数使能定时器配置定时器参数开启定时器中断生成工程编写用户程序编写中断回调函数启动定时器编译下载程序摘要 本章讲解STM32基本定时器中断的使用方法,实现通过定时器中断,定时500毫秒,让LED灯的状态每隔500ms改变一次。本章的工程可以从前一章节的工程中复制修改完成。配置工程 复制 STM32CubeMX系列教程0:创建工程 创建的工程目录GPIO_test,
摘要
本章讲解STM32基本定时器中断的使用方法,实现通过定时器中断,定时500毫秒,让LED灯的状态每隔500ms改变一次。本章的工程可以从前一章节的工程中复制修改完成。
配置工程
复制 STM32CubeMX系列教程0:创建工程 创建的工程目录GPIO_test,修改文件目录名称为TIM,双击打开GPIO_test.ioc。
配置定时器参数
使能定时器
打开Stm32Cubemx配置文件
①-②进入定时器设置
③使能定时器时钟源,选择内部时钟源Internal Clock。
配置定时器参数
经过查看STM32单片机的数据手册,可知,TIM1挂载在APB2总线下,
APB2的时钟为100MHz,如果想要使其500ms中断一次,那么可以通过10000分频后,使其速度降为10KHz,那么每计数5000次就是500ms。计算机中数字都是以0为第一位,所以参数都需要减一。
①定时器分频值,这里为10000分频。
②计数模式,默认向上计数。
③定时器重载值,这里设为5000。
④内部时钟分频,默认不分频即可。
打开自动重载,设置auto_reload prelode 为ENABLE。
开启定时器中断
启动定时器1的更新中断。
设置中断优先级,在实际工程项目中,当中断过多时,才需要设置中断优先级,测试工程无需设置。
生成工程
配置好STM32CubeMX后,生成工程,打开工程。
编写用户程序
编写中断回调函数
打开定时器HAL库,
找到HAL_TIM_PeriodElapsedCallback
函数,双击跳转。这个函数HAL为用户提供的定时器的回调函数,所有定时器中断都在此函数中处理。
复制函数名称void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
在main.c文件的末尾,在 USER CODE BEGIN 4 与 USER CODE END 4 之间重写中断回调函数。并在回调函数中写入用户代码。
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){ if(htim == &htim1) //判断中断是否来自于定时器1
{
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin); //翻转LED灯的状态
}
}
启动定时器
回到主函数mian.c,在USER CODE BEGIN 2与USER CODE END 2之间加入用户初始化函数,这里添加定时器的启动代码。
HAL_TIM_Base_Start_IT(&htim1); //通过这行代码,以中断的方式启动定时器。
定时器的启动方式还有两种:
- HAL_TIM_Base_Start_DMA();
以DMA的方式启动,可以通过DMA直接访问定时器的计数值。- HAL_TIM_Base_Start();
以轮询的方式启动,不进入中断,仅计数。通过程序主动查询寄存器获取状态
编译下载程序
程序编译完成并下载后,LED灯每隔500ms改变一次状态。
STM32单片机程序下载方法有多种,有需要请跳转
STM32程序下载0:STM32CubeProgrammer安装
STM32程序下载1:通过keil-ST-Link方式下载
STM32程序下载2:通过STM32CubePro-ST-Link下载
STM32程序下载3:通过STM32CubePro-UART下载
STM32程序下载4:通过STM32CubePro-USB下载
选择你所需要的程序下载方法。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)