核心原因通常是规则组序列长度与DMA搬运数量不匹配。先查ADC_HandleTypeDef.Init.NbrOfConversion是否设为实际通道数(如3),若仍为1,HAL只启动1次转换,DMA自然只搬1个。其次检查Rank配置:每个通道必须用ADC_ChannelConfTypeDef.Rank依次设为1、2、3,且SamplingTime有效,重复Rank会导致序列覆盖。第三看DMA初始化:Mode用DMA_CIRCULAR或NORMAL均可,但DataLength必须等于通道数×数据宽度(HAL_ADC_Start_DMA的Length参数传通道数),PeriphDataAlignment=HAL_DMA_P_DATAALIGN_HALFWORD,Mem同理。第四确认ADC_CR2的DMA位与DMAContinuousRequests:HAL_ADC_Start_DMA内部会置位,但若在CubeMX中未使能DMA Continuous Requests,单次模式转换完一轮即停。最后排查DMA请求映射:STM32F1/F4的ADC1使用DMA1_Channel1,ADC3用DMA2_Channel5等,通道选错则只触发一次。建议用调试器观察ADC_DR与DMA CNDTR递减情况逐层定位。