现场条件:
1.AD采集,DMA传输;AD设置为单通道的持续模式,DMA设置为单次模式。AD模拟看门狗设置的上门槛小于AD采集值,下门槛大于AD采样值,当DMA单次结束后,即会发生AD看门狗中断和溢出中断
void ADC1_IRQHandler(void)
{
if(ADC_GetITStatus(ADC1, ADC_IT_OVR) != RESET)
{
//while(1);
__NOP(); //1处
}
if(ADC_GetITStatus(ADC1, ADC_IT_AWD) != RESET)
{
//while(1);
__NOP(); //2处
}
}
此时,没有对相应位的中断标志Pendbit位的清除,所以会一直会进入中断。
现场现象:1,AD模拟看门狗会触发中断。2,在2处,和1处打上断点。进入断点的位置是,先到2处,再到1处,然后再到2处,再到1处,依次循环。
总结:
1.模拟看门狗触发时不用非要设置上门槛大于下门槛,它只判断是否AD采样值大于上门槛,和小于下门槛,进入中断后stm32没有提供给我们到底是大于上门槛中断还是小于下门槛造成的中断,只能我们自己判断。
2.看门狗中断的优先级大于溢出中断的优先级,因为它先执行2处的内容,后进行1处的内容