2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 单片机C语言编程:利用keil编程环境实现精准延时

单片机C语言编程:利用keil编程环境实现精准延时

时间:2022-06-02 21:04:41

相关推荐

单片机C语言编程:利用keil编程环境实现精准延时

STM32开发板的硬件已经做回来了,我手动焊了两块,目前正在调试部分程序来验证硬件设计的合理性,如果调试完毕没有问题的话,我会将原理发给大家,并统计下物料成本,如果需要的人多,我可以把它做出来,以开发板的硬件资源,每天讲解STM32单片机,包括硬件设计和程序讲解。希望大家支持。

在编写单片机程序时,经常会用到延时函数,除了定时器外,我们经常会用到for循环来实现延时。如下所示:

void delay()

{

unsigned int i;

for(i=0; i<200;i++);

}

对于延时时间要求不严格的地方我们可以大约估算一下,但有时候要求比较严格,这时候该怎么办呢?其实通过keil软件模拟的方式就可以计算出for循环的延时时间。今天讲解两种方法。

软件延时与晶振值密切相关,所以在计算之前要先确定好晶振的值,在keil中确定晶振值的方法如下图所示:

在本例中将晶振值设置为12M。程序如下:

编译,没有出现错误,下面介绍计算延时方法。

方法一

差值计算法

进入调试状态,设置两个断点,使程序运行到第一个断点,记录下此时的sec值,如下图所示:

此时T1 = 0.000389,单位为秒。再次使程序运行,程序会停在第二个断点处,再记录下此时的sec值,如下图所示:

此时,T2 = 0.025691,单位为秒。两个时间之差即为delay()函数的延时时间,计算如下:

T = T2 - T1=(0.025691-0.000389)s=0.025302s=25.302ms。delay()函数的延时时间约为25ms。

方法二

观察窗读数法

在调试状态下,打开Performance Analyzer,如下图所示:

同样设置好断点,再按如下设置:在Performance Analyzer观察窗点击Setup,在对话框内输入延时函数的函数名,然后点击Define,如下图所示:

使程序运行,运行至第一个断点,如下图所示:

再次让程序运行,运行至第二个断点,如下图所示:

这时候,delay()延时函数已经运行完,要查看延时时间要进行如下操作:Performance Analyzer观察窗点击delay()函数,在其上方会出现时间信息,如下图所示。

可以看见运行时间为0.025298s=25.298ms,即delay()延时时间为25ms。

本订阅号致力于单片机、ARM等嵌入式软硬件的设计经验分享,秉承“人人都是电子设计经验的分享者”的理念,成功路上不孤单,我们一起努力。

公众号:micropoint8 网址:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。