STM32F1x CubeMX教程(二)—— 定时器基本使用
@author:带火星的小木条
@date:02,05,2020
教程对应的keil工程代码下载://download.csdn.net/download/weixin_43116606/12136913
1.时钟配置
时钟配置如下图,可以看到APB1总线时钟频率为36M,但定时器频率为72MHz.
2.定时器选项配置
定时器定时频率=时钟源频率/ [(PSC+1)(ARR+1)]=72M/[(71+1)(999+1)]=1000Hz,所以定时的时间为1ms.
定时相同的时间,PSC和ARR的值可以任意,但是注意PSC和ARR都是16位寄存器,最大值不超过65535.
定时器有如下三种计数模式:
递增计数模式:计数器从 0 计数到自动重载值,然后重新从 0 开始计数并生成计数器上溢事件。
递减计数模式:计数器从自动重载值开始递减到 0,然后重新从自动重载值开始计数并生成计数器下溢事件。
中心对齐模式:计数器从 0 开始计数到自动重载值 – 1 ,生成计数器上溢事件;然后从自动重载值开始向下计数到 1 并生成计数器下溢事件。之后从0 开始重新计数。
默认向上计数,由自动重转载值计数到最大值产生溢出。其他配置采用默认值。
3.定时器中断
点击NVIC中断管理,勾选定时器1更新中断,产生溢出时会跳转到中断服务函数。此处开启定时器1中断后还可配置中断优先级,可采用默认配置,也可自行配置。
4.GPIO配置
为显示定时效果,使LED每0.5s闪烁一次,因此还需初始化IO口输出。
我的开发板PB0与LED相连,将PB0设置为输出模式,并且将标签设置为LED0,方便移植修改。其他默认:初始化低电平,推挽输出,既不上拉也不下拉,低速。
5.工程选项配置
.编写业务代码
生成keil工程后打开,因为初始化的工j经由CubeMX配置好,接下来的步骤:
1)启动定时器
函数原型:
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)
2)中断回调函数编写
首先定义一个计数变量Tim1_cnt,定时器定时时间1ms,计数500次即达到定时0.5s的目的。
每次进入回调函数使Tim1_cnt+1,当定时0.5s时,翻转LED0状态。
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
if (htim->Instance == htim1.Instance) {
Tim1_cnt++;
if(Tim1_cnt==500){
Tim1_cnt=0;
HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin);
}
}
}
7.编译下载,默认使用ST-LINK下载,若使用其他下载器,需选择对应的下载方式。
上一篇: 基于mysql数据库的密码问题详解
下一篇: SBT在Windows上的配置