代码里设置一个记录ADC结果异常的标志Flag_ADC_Abnormal,若发生结果异常会在ADC中断对该标志变量赋非0值。
在主循环里若发现异常标志非0,然后去进一步做所有ADC结果的确认。
上面演示过程中监测到一个异常数据,触发了模拟看门狗中断,ADC结果异常标志被赋0xff值,会做进一步异常数据的确认。 我在上面采用的一个模拟看门狗对8个通道的结果进行监测,如果一轮扫描转换下来出现多个异常数据,会触发几次中断呢? 不妨基于同一开发板验证下。我加个ADC中断次数累计变量ADC_Res_CNT,并把阈值下限调整为1200,其它不动。【见下图】
然后进行测试,得到下面结果。
从结果看,除了2个数据正常外其它均异常,故一轮转换下来发生了6次中断,显然我们可以根据中断次数进一步判断一轮转换下来的异常通道数。【注:这里ADC配置为单次扫描模式,DMA配置为Normal模式。】 好,今天分享的就到这里,匆匆草就。虽是些小东西、小知识点,或许哪日可以在某个应用上帮到您大忙,愿君我心有戚戚焉。下次再聊。
|