最常见原因是规则组序列长度与DMA搬运长度不匹配,或扫描模式未真正生效。逐项排查:1) 确认ADC_InitTypeDef.ScanConvMode=ENABLE,单通道时该位常被误设为DISABLE,导致只转第一个;2) 检查NbrOfConversion是否等于实际通道数,HAL_ADC_ConfigChannel会按Rank写入SQR1的L字段,若只配置了Rank1则序列长度=1;3) 每个通道必须调用HAL_ADC_ConfigChannel并赋不同Rank,Rank不能重复或跳号;4) DMA配置中BufferSize应等于通道数×数据宽度,PeriphDataAlignment与MemDataAlignment均设为HALFWORD,方向为外设到内存,模式建议Circular;5) 启动顺序必须是HAL_ADC_Start_DMA而非先HAL_ADC_Start再手动开DMA,否则DMA请求未使能;6) 检查ADC_CR2的DMA位与ADON,以及DMA通道是否与ADC匹配(如F4的ADC1对应DMA2 Stream0/4);7) 若用CubeMX生成,确认DMA请求已勾选且Rank顺序正确。建议先用调试器查看SQR1/SQR2寄存器确认序列长度,再核对DMA NDTR是否等于预期。