STM32 HAL库ADC多通道DMA扫描模式只转换一次就停,常见原因有两个:一是DMA未配置为循环模式。在CubeMX中,ADC的DMA请求默认是Normal模式,转换完指定数量后DMA传输完成即停止,不会自动重启。需在DMA配置中将Mode改为Circular,并在代码中调用HAL_ADC_Start_DMA()时确保DMA句柄的循环模式已生效。二是EOC标志位配置问题。ADC扫描模式下,每个通道转换结束都会置EOC,但DMA请求通常由EOC触发。若在HAL_ADC_ConvCpltCallback中调用了HAL_ADC_Stop_DMA(),或未清除EOC标志导致后续触发异常,也会停止。建议检查:1)DMA模式是否为Circular;2)是否误在回调中停止DMA;3)ADC的DMA连续请求是否使能(ADC_CFGR的DMACFG位,循环模式需置1);4)EOC选择位(EOCSelection)应设置为ADC_EOC_SINGLE_CONV或ADC_EOC_SEQ_CONV,确保每次转换都产生DMA请求。实操中,先确认DMA循环模式,再检查ADC配置中的DMACFG和EOCSelection,通常可解决问题。