欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STM32F1x CubeMX教程(二)—— 定时器基本使用

程序员文章站 2024-02-21 20:56:58
...
@author:带火星的小木条
@date:02,05,2020

教程对应的keil工程代码下载://download.csdn.net/download/weixin_43116606/12136913

1.时钟配置

STM32F1x CubeMX教程(二)—— 定时器基本使用

时钟配置如下图,可以看到APB1总线时钟频率为36M,但定时器频率为72MHz.

STM32F1x CubeMX教程(二)—— 定时器基本使用

2.定时器选项配置

定时器定时频率=时钟源频率/ [(PSC+1)(ARR+1)]=72M/[(71+1)(999+1)]=1000Hz,所以定时的时间为1ms.

定时相同的时间,PSC和ARR的值可以任意,但是注意PSC和ARR都是16位寄存器,最大值不超过65535.

STM32F1x CubeMX教程(二)—— 定时器基本使用

 

定时器有如下三种计数模式:

递增计数模式:计数器从 0 计数到自动重载值,然后重新从 0 开始计数并生成计数器上溢事件。

递减计数模式:计数器从自动重载值开始递减到 0,然后重新从自动重载值开始计数并生成计数器下溢事件。

中心对齐模式:计数器从 0 开始计数到自动重载值 – 1 ,生成计数器上溢事件;然后从自动重载值开始向下计数到 1 并生成计数器下溢事件。之后从0 开始重新计数。

默认向上计数,由自动重转载值计数到最大值产生溢出。其他配置采用默认值。

 

3.定时器中断

点击NVIC中断管理,勾选定时器1更新中断,产生溢出时会跳转到中断服务函数。此处开启定时器1中断后还可配置中断优先级,可采用默认配置,也可自行配置。

STM32F1x CubeMX教程(二)—— 定时器基本使用

 

4.GPIO配置

为显示定时效果,使LED每0.5s闪烁一次,因此还需初始化IO口输出。

STM32F1x CubeMX教程(二)—— 定时器基本使用

我的开发板PB0与LED相连,将PB0设置为输出模式,并且将标签设置为LED0,方便移植修改。其他默认:初始化低电平,推挽输出,既不上拉也不下拉,低速。

STM32F1x CubeMX教程(二)—— 定时器基本使用

5.工程选项配置

STM32F1x CubeMX教程(二)—— 定时器基本使用

 STM32F1x CubeMX教程(二)—— 定时器基本使用

.编写业务代码

生成keil工程后打开,因为初始化的工j经由CubeMX配置好,接下来的步骤:

1)启动定时器

函数原型:

HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)

STM32F1x CubeMX教程(二)—— 定时器基本使用

2)中断回调函数编写

首先定义一个计数变量Tim1_cnt,定时器定时时间1ms,计数500次即达到定时0.5s的目的。

STM32F1x CubeMX教程(二)—— 定时器基本使用

每次进入回调函数使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);
		}
	}
}

STM32F1x CubeMX教程(二)—— 定时器基本使用

7.编译下载,默认使用ST-LINK下载,若使用其他下载器,需选择对应的下载方式。 

STM32F1x CubeMX教程(二)—— 定时器基本使用