小弟在使用LPC21xx及LPC2300系列单片机遇到点棘手的问题,用C做一段延时程序时,当程序代码放置于不同的地址将导致延时不确定,就是说同样的代码放置的地址不一样可能导致延时不一样,百思不得其解,而且代码都运行于通一个类型的存储区域,以下为扑捉的C代码图片、汇编代码图片,以及抓到的引脚输出波形。
使用的是周立功的工程模板,ADS1.2编译器,AXD仿真,在进入循环前已禁止所有中断,通过示波器检测NRF_CLK2引脚的变化来查看延时时间,可以看到示波器抓到的图片有三段(3个100us)较长,紧跟的三段较短,并周期性循环。正常的100us在不正常的时候大概为66us,汇编代码也是完全一样的。
有哪位兄台碰到过类似问题吗?
C:\Documents and Settings\Administrator\桌面\C代码1
C:\Documents and Settings\Administrator\桌面\反汇编代码1
C:\Documents and Settings\Administrator\桌面\C代码2
C:\Documents and Settings\Administrator\桌面\反汇编代码2
C:\Documents and Settings\Administrator\桌面\捕获波形