ADC转换器中使用HAL库中断处理扫描模式下的数据心得
前言
之前看视频上说,多通道扫描时,基本都使用DMA来传输数据,而我想着用中断处理看看,DMA是上上签,中断处理数据只是好玩,这是就说说当时配置时的一些问题
使用函数HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc)
这个函数简单的理解就是使能ADC和ADC里面的中断,代码不详细分析,文章的主要内容在下面
函数HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc)
这个函数就是发生中断时,调用的函数
当时我的想法是,ad转换每一个规则通道之后都会生成一个EOC中断(前提是自己配置了ADC_CR2寄存器位10)
然后我就想着每生成一个中断,在中断函数里我就把数据拷贝出来,但是直接调用里面需要我自己写的HAL_ADC_ConvCpltCallback()函数,也只能拷贝出第一次转换后的数据,当时出现了问题,我一直以为是生成中断后就把中断关了,但是实际上不是这样,问题在于HAL_ADC_ConvCpltCallback()函数后面2行的清理标志位的操作
/* Clear regular group conversion flag */
__HAL_ADC_CLEAR_FLAG(hadc, ADC_F