STM32开发板的硬件已经做回来了,我手动焊了两块,目前正在调试部分程序来验证硬件设计的合理性,如果调试完毕没有问题的话,我会将原理发给大家,并统计下物料成本,如果需要的人多,我可以把它做出来,以开发板的硬件资源,每天讲解STM32单片机,包括硬件设计和程序讲解。希望大家支持。 在编写单片机程序时,经常会用到延时函数,除了定时器外,我们经常会用到for循环来实现延时。如下所示: voiddlay() { unsigndinti; for(i=0;i;i++); } 对于延时时间要求不严格的地方我们可以大约估算一下,但有时候要求比较严格,这时候该怎么办呢?其实通过kil软件模拟的方式就可以计算出for循环的延时时间。今天讲解两种方法。 软件延时与晶振值密切相关,所以在计算之前要先确定好晶振的值,在kil中确定晶振值的方法如下图所示: 在本例中将晶振值设置为12M。程序如下: 编译,没有出现错误,下面介绍计算延时方法。 方法一差值计算法 ﹀ ﹀ ﹀ 进入调试状态,设置两个断点,使程序运行到第一个断点,记录下此时的sc值,如下图所示: 此时T1=0.,单位为秒。再次使程序运行,程序会停在第二个断点处,再记录下此时的sc值,如下图所示: 此时,T2=0.,单位为秒。两个时间之差即为dlay()函数的延时时间,计算如下: T=T2-T1=(0.-0.)s=0.s=25.ms。dlay()函数的延时时间约为25ms。 方法二观察窗读数法 ﹀ ﹀ ﹀ 在调试状态下,打开PrformancAnalyzr,如下图所示: 同样设置好断点,再按如下设置:在PrformancAnalyzr观察窗点击Stup,在对话框内输入延时函数的函数名,然后点击Dfin,如下图所示: 使程序运行,运行至第一个断点,如下图所示: 再次让程序运行,运行至第二个断点,如下图所示: 这时候,dlay()延时函数已经运行完,要查看延时时间要进行如下操作:PrformancAnalyzr观察窗点击dlay()函数,在其上方会出现时间信息,如下图所示。 可以看见运行时间为0.s=25.ms,即dlay()延时时间为25ms。 本订阅号致力于单片机、ARM等嵌入式软硬件的设计经验分享,秉承“人人都是电子设计经验的分享者”的理念,成功路上不孤单,我们一起努力。 白癜风可以治疗得好吗哪家白癜风能治愈
|