ADC的中断触发说明

目录

在大部分场景下,可以在ADC中断服务函数中,判断R32_ADC_SCAN_CFG2 & RB_ADC_IF_SCAN_END来判断是否完成了一轮ADC扫描。

但在磁轴键盘场景下,需要高频次扫描ADC,尽量少的ADC中断触发可以更高效执行代码。

 

测试ADC例程的多通道扫描功能,可以发现在使用多通道扫描+中断方式时,会出现每个ADC通道每完成一次采样,均会触发一次中断的情况。
例程中扫描了22路ADC通道,每个通道采样2次,会触发45次ADC中断。

45次的其中一次,是使用ADC粗调校准,触发了一次中断。粗调校准触发ADC中断无法规避,但仅需在修改ADC增益/采样速度后调用一次来获取粗调校准值,不需要循环调用。

 

令ADC所有通道扫描完后,仅触发一次ADC中断的初始化配置: 

①R32_ADC_DMA_END中需要配置通道数量+1(暂存数据的数组长度也要+1,不要越界访问数组)、R8_ADC_CTRL_DMA中删去RB_SCAN_AUTO_TYPE标志位。

②启用ADC扫描时,多一行ADC_StartContDMA();

③若需要暂停ADC扫描,需要多一行ADC_StopContDMA();

④需要再次启用ADC扫描时,其他配置项不用变,调用ADC_StartContDMA();、ADC_StartUp();两行代码即可。

image

 

posted @ 2026-08-03 17:19  JayWell  阅读(4)  评论(0)    收藏  举报