先确认ADC确实处于扫描模式(ADC_SCAN_ENABLE)且DMA连续请求已开(ADC_DMACFG_CONTINUOUS或HAL中DMA循环模式)。最常见原因是规则组序列长度未设:检查hadc.Init.ScanConvMode=ENABLE、NbrOfConversion(如3),并逐个调用HAL_ADC_ConfigChannel设置Rank 1/2/3,漏设Rank会导致只转第一通道。其次看DMA搬运宽度:ADC_DR为32位寄存器,若DMA配置PeriphDataAlignment=WORD、MemDataAlignment=WORD,缓冲区用uint32_t,长度等于通道数;若误配HALFWORD会错位。再查DMA模式是否为Circular、NDTR是否被覆盖,以及是否在启动前调用了HAL_ADC_Start_DMA而非HAL_ADC_Start。最后确认转换触发为软件或定时器且只触发一次,避免EOC中断里重复启动打断序列。逐层用调试器看ADC_SQR1的L位和DMA NDTR即可定位。