作者qeagle ()
看板ASM
标题[问题] PIC使用c30的__delay_us()
时间Sat Aug 17 02:40:11 2013
我发现使用在c30的c compilier上__delay_us()函式时
输入是const像 __delay_us(20)就正常
换成变数像
delay=20;
__delay_us(delay)
延迟时间就会爆增
不知道为什麽
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.141.134.219
1F:推 ksmrt0123:用变数需要run time才会算出真正的delay数值, 细节看一 08/19 01:30
2F:→ ksmrt0123:下 libpic30.h 就知道 08/19 01:31
3F:→ qeagle:谢谢你的回应,但我看它的说明只有提到定义FCY这个值会影响 08/21 14:38
4F:→ qeagle:时间FCY是外部振荡器频率,并没看到用常数与变数有差别? 08/21 14:39
5F:→ qeagle:我自己怀疑是否巨集造成,但也看不出来 08/21 14:55
6F:推 ksmrt0123:那你要看一下compiler optimization的 constant 08/22 00:15
7F:→ ksmrt0123:folding 与 constant propagation 08/22 00:15
9F:→ ksmrt0123:你用的compiler可能没有做constant propagation, 或是 08/22 00:18
10F:→ ksmrt0123:条件不足所以没做propagation 08/22 00:21
11F:→ qeagle:哇..这个就太深了,这个专有名词我都没看过,但我想程式有没 08/22 19:07
12F:→ qeagle:有做佳化..应该不会让原预期是us的delay功能,变成ms等级吧 08/22 19:08
13F:→ ksmrt0123:那就... 直接看编出来的asm档的差异吧 08/23 01:34