用430的时候遇到过这种情况
void delay( void ){
int i;
for( i=0; i < 1000; ++i)
;
}
void fun( void ){
....
delay();
...
}
调用的delay在最高优化的时候不见了,
很明显,编译器发现delay程序没作任何有意义的事情,所以。。。
解决办法1:
void delay( void ){
volatile int i; // 强制不许优化变量i
for( i=0; i < 1000; ++i)
;
}
解决办法2:
void delay( void ){
int i;
for( i=0; i < 1000; ++i)
_nop_(); // 做点什么
}
以上供大家参考 |