那个我使用模拟看门狗中断,EOC中断,所以在中断函数里需要判断是那种中断,看中断标志位,但是我还需要在主程序中判断中断转换结束,读取转换值。
所以问题出现了,如果主程序中判断中断转换结束的话就直接跳到中断中了啊,但是从中断回来怎么没有执行主程序后面的程序。所以想问一下,怎么在中断中判断EOC中断,除了中断标志位就没别的办法了吗?
ADC中断程序
void ADC1_2_IRQHandler(void)
{
delay_init();
led_init();
if(ADC_GetITStatus(ADC1, ADC_IT_AWD))
{
PAout(8) = 0;
delay_ms(200);
PAout(8) = 1;
delay_ms(200);
ADC_ClearITPendingBit(ADC1, ADC_IT_AWD);
}
// if(ADC_GetITStatus(ADC1, ADC_IT_EOC)) ***
{
PDout(2) = 0;
delay_ms(200);
delay_ms(200);
ADC_ClearITPendingBit(ADC1, ADC_IT_EOC);
}
}
主程序中的
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC )); ****
adcz =ADC_GetConversionValue(ADC1);
标*号的两句话是不是冲突了,就是说主程序中始终停在了主程序中*号那句话呢。。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
int ADC_FLAG=1;
主程序
...
while(ADC_FLAG);
ADC_FLAG=1;
...
中断里做
ADC_FLAG=0;
好拗口,不会说点通俗易懂的语言啊,主程序中判断ADC采集结束,是不是这个意思
---------------------------------
但是每次中断结束时我都中断标志位复位了的,那在主程序中的那个while循环能过去吗?
一周热门 更多>