for(i=0;i<12000;i++);
此定时程序系统编译后出现如下警告:
Detected SW delay loop using empty loop
延时函数没有发挥作用,为什么?
user3917511:
检测到sw延迟使用空循环回路 你的延迟函数有问题。。。
lite xu:
回复 user3917511:
我查到CCS好像会自动优化for循环,可以在变量定义前加volatile解决,可我加过以后依然没有效果,不知何解,我用的是CCS6.0
lite xu:
回复 user3917511:
#include <msp430.h>
void main(void){ __enable_interrupt(); SFRIE1|=WDTIE; P1DIR=0xff; volatile unsigned int i,j; P1OUT=0xff; for(i=0;i<30000;i++) for(j=0;j<50;j++); P1OUT=0x00; while(1);}#pragma vector=WDT_VECTOR
__interrupt void WatchTimer(void)
{ WDTCTL=WDTPW+WDTCNTCL+WDTIE;
}
谢谢你的回答,可是在以上程序中,可是在以上程序中依然会提示无效的i,j;两个for循环和while循环依然没有发挥作用,
我用的CCS6.0版本,多次调试结果出错,求解答,谢谢。
琉璃酱:
回复 lite xu:
工程名上右键>>properties >>build >>msp430 compiler >>optimization >>把右边的两个选项都选为0
还不行就点击msp430 compiler 下的选项卡advice options you右边的set error …..选成remark或者空白
在不行我也没招了