多通道 ADC + DMA 连续采样(温度/电压监测)
// ADC1 扫描 CH0(CH1:PA1 电压) CH1(PA2 温度) → DMA 到数组
ADC_HandleTypeDef hadc1 = {0};
hadc1.Instance = ADC1;
hadc1.Init.ScanConvMode = ENABLE; // 扫描多通道
hadc1.Init.ContinuousConvMode = ENABLE; // 连续转换
hadc1.Init.NbrOfConversion = 2;
HAL_ADC_Init(&hadc1);
ADC_ChannelConfTypeDef cc = {0};
cc.Channel = ADC_CHANNEL_0; cc.Rank = 1; cc.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;
HAL_ADC_ConfigChannel(&hadc1, &cc);
cc.Channel = ADC_CHANNEL_1; cc.Rank = 2;
HAL_ADC_ConfigChannel(&hadc1, &cc);
uint16_t buf[2] = {0};
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)buf, 2);
// 电压 = buf[0] * 3.3f / 4095.0f