最常见原因是规则组序列长度未配置或DMA搬运宽度不匹配。先查ADC_InitStruct.NbrOfConversion:多通道扫描必须设为通道数,且每个通道用ADC_ChannelConfTypeDef的Rank依次配置(Rank=1..N),漏配Rank会导致只转换第一个。其次确认ADC_InitStruct.ScanConvMode=ENABLE,否则只转Rank1。再查DMA:HAL_ADC_Start_DMA的BufferSize应为通道数,DMA外设/内存数据宽度需与ADC分辨率匹配(12位通常用HALFWORD),若配成BYTE会只搬低8位或错位。还要确认DMA模式为Circular或Normal且NDTR正确,DMA通道与ADC请求映射正确。最后检查是否在转换中途调用HAL_ADC_Stop_DMA或未清除EOC/OVR标志。建议用调试器看ADC_DR和DMA NDTR,逐层定位。