STM32学习笔记4:定时器的应用

使用软件

1.STM32CubeMX
配置接口参数,生成代码
2.Keil5
书写自己的代码部分

使用硬件

1.主板STM32F407ZGT6
2.串口驱动USB To TTL
3.烧录器ST-LINK V2

任务:使用定时器中断发送数据给串口

首先我们续接之前的配置进行后续的设置,如果没看过之前的设置可以去看看我之前的文章 STM32学习笔记2:USART的应用STM32学习笔记2:USART的应用(扩展printf函数进行串口通信)在这里就不过多赘述。

STM32CubeMX配置单片机

在这里插入图片描述
在这里插入图片描述

依照上边两张图我们进行定时器的配置,由于我的主频是168MHz我目前是需要1s发送一次串口数据所以我需要将定时器设置为1ms一次计数,计数一千次就可以达到1s的延时效果,而定时器的频率的公式是f = 主频/[(预分频系数+1)*(计数周期+1)]因此我将预分频系数设置为168-1,计数周期设置为1000-1,这样子我们得到的f=168M/[(168-1+1)*(1000-1+1)] = 1kHz也就是1ms一次。
在这里插入图片描述
按照上图指示我们设计一下时钟控制RCC这里在高速时钟上选择使用外部无源晶振或者外部有源晶振都可以,我这边选择外部无源晶振也就是Crystal/Ceramic Resonator,到这里我们在STM32CubeMX上的配置就已经完成了。
在这里插入图片描述
如果已经打开过keil5那就点close,如果没打开过就点open project

keil5的设置

在这里插入图片描述
进入keil5界面后如果弹出如上图这些窗口就全部点击是选项。
在这里插入图片描述
在这里插入图片描述
依照以上两幅图的指示我们进行keil5的一些设置这样子可以提高我们的工作效率,不知道为什么勾选上USB microLIB的可以去看一下我之前的学习笔记STM32学习笔记2:USART的应用(扩展printf函数进行串口通信),这里就不细讲了,至于后边的Reset and Run是为了在烧录完成后自动复位并且执行烧录的程序。
注意:在重新配置STM32CubeMX生成代码后要重新执行上边两幅图的操作,因为在重新生成后这些配置会重置,我暂时也不知道如何去修改使其不重置

代码设计

tim.c定时器中的设计

首先我们需要在tim.c中设计延迟一秒的函数。
在这里插入图片描述
写入的代码如下,这个代码的含义是当定时器溢出时会回调该函数,即每一毫秒会触发一次该函数,所以我们使用该函数设计一秒的延时效果,这样可以在不空等一秒中的情况下执行延时操作。

int timecount = 0;
int printbit = 0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM1)//定时器1触发的该回调函数
	{
		timecount++;
		if(timecount>= 1000)//1000次触发代表1000ms=1s
		{
			timecount = 0;
			printbit = 1;//触发打印标志位
		}
	}
}

在这里插入图片描述
以下代码就是上图中所需添加的全局变量

extern int printbit;//打印标志位
main.c主函数的设计

在这里插入图片描述
将以下代码段添加到上图中的位置,注意不要填写到beginend之外的地方,不然在重新去STM32CubeMX上配置生成代码时会被删除掉。

	HAL_TIM_Base_Start_IT(&htim1);//启动定时器
	int print4sbit = 0;//四秒标志位
if(printbit == 1)//到达一秒
		{
			printbit = 0;
			print4sbit++;
			printf("%ds\n",print4sbit);//串口打印相关秒数
			if(print4sbit == 4)//到达四秒
			{
				HAL_TIM_Base_Stop_IT(&htim1);//关闭定时器
			}
		}

在写完这些代码段后,我们就可以build我们的工程了
在这里插入图片描述
按照上图步骤进行执行后出现下图的样式就代表我们烧录成功这时我们就可以看一下我们的串口助手了。
在这里插入图片描述
在这里插入图片描述
以上图片的串口显示代表我们执行成功了,到此我们的定时器的应用也到此为止了,感谢各位用户的观看,如果觉得写的还可以的可以点个赞再走,我也会持续更新下去这个STM32学习笔记系列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值