CCS5.1如何调试延时函数的时间?

CCS5.1如何调试延时函数的时间?,第1张

例如下面这样的延时函数

void delay(volatile int count)

{

int i,j

for(j=0j<countj++)

{

for(i=0i<2000i++)

}

}

通过对count变量的传值来完成对延时时间的控制。

如果要准确计算到底有多少时间,我认为大致等于2000*count*单条指令执行周期时间(在不考虑执行跳转指令的延迟间隙、内层循环计数器复位、外层循环计数器累加的情况下)。

单条指令执行周期时间也就是你所使用的DSP处理器主频的倒数。

1、首先,在proteus画出仿真图。

2、其次,编写程序,写入头函数。

3、然后,写一个延时函数,来调节流水灯的时间间隔。

4、最后,就是主函数,包括流水灯的反复循环和j流廊仗材水灯的方向。

优化举个简单例子:int

ii=1i=2i=3i=4i=5i=6i=7i=8i=9i=10这段代码会被直接优化成

i=10连续10次给i赋值,只有最后一次才有意义。前面的赋值没有意义,会被直接优化掉。如果后面i也没有被使用,则变量i本身没有意义,直接优化掉。最后编译出来的代码就是空。进一步,把上面的赋值换成循环int

ifor(i=1i<10i++)这段代码也会被优化成i=10循环相当于连续给i赋值9次,循环里面i的值是多少,是没有意义的,最后循环退出时的i值才有意义,相当于最后一次的赋值i=10如果后面的程序没有用到i,则变量i本身没有意义,直接优化掉。最后编译出来的代码就是空。谨记:空循环是没有意义的,有点优化能力的编译器,都会将空循完全环优化掉。如果需要延时,请加上volatile,或者调用编译器的延时函数,或者用编译参数禁止优化,或者使用内嵌汇编。总之,不要使用没有volatile的空循环带实现延时,这是不规范的。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11758541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存