keil开发M3遇到不解

Other Parts Discussed in Thread: LM3S8962

我刚刚调过一段程序,发现一个问题,详情大神帮忙解疑:

我在配置LM3S8962的ADC中断时,发现:

char ADC_EndFlag=false;

触发ADC后,我在主函数中用以下这么一句等待采样完成

while(!ADC_EndFlag);

其中ADC_EndFlag在ADC中断函数内更改;

   可是,发现单片机会一直死在while(!ADC_EndFlag);

而我断点硬件仿真,发现中断函数已经进入,而且ADC_EndFlag在:

//adc采样序列3的中断

void ADC_Sequenece_3_ISR(void)

{

unsigned long ulStatus;

ulStatus=ADCIntStatus(ADC_BASE,3,true);

ADCIntClear(ADC_BASE,3);

if(ulStatus!=0)

{

ADC_EndFlag=true;

}

}中被置1;可是程序还是是死在while(!ADC_EndFlag);中。

当我做以下更改:

for( i=0;i<60000;i++);

while(!ADC_EndFlag);

即在其前面加一个延时,程序就可以正常运行了。这是为什么啊?难道,中断中改过的状态更新不上?