STM32学习笔记之定时器中断代替延时函数实现更精准计时(延时处理)

STM32学习笔记---------------------------普通延时与定时器延时哪个更好

不知不觉距离上一次发文已经过了两个月了,期间经历了很多事情,也学到了很多知识点,本文也是继上一篇文章之后的学习记录,希望有不足之处能得到各位大神指点!

简要介绍延时

对于初学者来说,延时是一个很简单却又不简单的功能,对于一些普通的延时函数我了解到的大概有以下这些:

//毫秒级延时
void delay_ms(u16 time)//这个time是你自定义的时间长度,比如2ms时time = 2;3ms时time = 3等,以此类推
{
	u16  time_cnt_ms  = 0;//这里定义一个变量,计数
	while(time --)
	{
		time_cnt_ms   = 10000;//这个值可以通过示波器或者逻辑分析仪抓,实在不行自己掐着表用LED显示来判断
		while(time_cnt_ms  --);
	}
}

//微秒级延时
void delay_us(u16 time)
{
	u16  time_cnt_ms  = 0;
	while(time --)
	{
		time_cnt_ms   = 8;//这个我是按8位记一次随便定义的,最好根据逻辑分析仪或者示波器自己抓了再自定义
		while(time_cnt_ms  --);
	}
}

以上是普通的延时函数,在实际项目中其实这样做有很大的忌讳,第一这样做其实不太精准,当你调用上面延时函数多了用示波器或者逻辑分析仪抓就知道时间会有一定的误差,而以后的学习中对整个程序的运行时间可控性考虑是成为高级程序员必不可少的经理;第二这样做就相当于空耗CPU资源,让他停在这个递减计数中循环,后果严重点可能会直接烧毁元器件啥的。
所以我们有了一种精准一点的延时,既能精准计数,又能处理别的事情而不占用CPU太多资源。没错,我要说的就是利用定时器中断延时,下面贴出我对这方面的程序运用:

//首先我们要了解什么是系统时钟--------建议网上直接搜索,最好看你所用的芯片型号的
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凉风有信sherlok

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值