初级会员

- 积分
- 72
- 金钱
- 72
- 注册时间
- 2020-4-4
- 在线时间
- 18 小时
|
3金钱
我在ADC的2通道转化实验中用DMA传输,并且用了ADC_ITConfig(ADC1,ADC_IT_EOC, ENABLE);
连接了NVIC后我编写中断服务函数
void ADC1_2_IRQHandler(void)
{
//if (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC))
//if (ADC_GetITStatus (ADC1 ,ADC_IT_EOC)!=RESET )
//{
//ADC_ConvertedValue = ADC_GetConversionValue (ADC1);
pulse=ADC_ConvertedValue[1]/40.96;
TIM_SetCompare1(TIM3, pulse);//修改CCR1的值
psc=ADC_ConvertedValue[0]/6.32+72;
TIM_PrescalerConfig(TIM3,(psc-1),TIM_PSCReloadMode_Immediate);
//}
ADC_ClearITPendingBit (ADC1,ADC_IT_EOC);
}
问题就是出在被注释掉的两行if语句, 一个是ADC_GetFlagStatus函数,另一个是ADC_GetITStatus;
经过我实际测试,只要用了其中一个if ,都不会执行下面的函数体。
然后我只能把两个if都注释了,运行程序时发现是可以正确中断并且执行下面的函数体的。
我想咨询就是这两个if函数有什么区别呢? 为什么都跑到中断函数里了但是不满足这两个if条件呢?
|
|