[问题] PIC使用c30的__delay_us()

楼主: qeagle   2013-08-17 02:40:11
我发现使用在c30的c compilier上__delay_us()函式时
输入是const像 __delay_us(20)就正常
换成变量像
delay=20;
__delay_us(delay)
延迟时间就会爆增
不知道为什么
作者: ksmrt0123 (ksmrt)   2013-08-19 01:30:00
用变量需要run time才会算出真正的delay数值, 细节看一下 libpic30.h 就知道
楼主: qeagle   2013-08-21 14:38:00
谢谢你的回应,但我看它的说明只有提到定义FCY这个值会影响时间FCY是外部振荡器频率,并没看到用常数与变量有差别?我自己怀疑是否宏造成,但也看不出来
作者: ksmrt0123 (ksmrt)   2013-08-22 00:15:00
那你要看一下compiler optimization的 constantfolding 与 constant propagationhttp://en.wikipedia.org/wiki/Constant_folding你用的compiler可能没有做constant propagation, 或是条件不足所以没做propagation
楼主: qeagle   2013-08-22 19:07:00
哇..这个就太深了,这个专有名词我都没看过,但我想程式有没有做佳化..应该不会让原预期是us的delay功能,变成ms等级吧
作者: ksmrt0123 (ksmrt)   2013-08-23 01:34:00
那就... 直接看编出来的asm档的差异吧

Links booklink

Contact Us: admin [ a t ] ucptt.com