stm32 adc采样参数
    
- 多通道连续扫描 关闭连续转换 关闭间断转换
- ADC配置 其他的默认即可 使用stm32cubeMX配置 hadc3.Init.ScanConvMode = ENABLE; hadc3.Init.ContinuousConvMode = DISABLE; hadc3.Init.DiscontinuousConvMode = DISABLE; 采集电压 void ADC_Save_Value() { int i = 0; uint32_t value; uint32_t value1; HAL_ADC_Start(&hadc3);//开启ADC1 HAL_ADC_PollForConversion(&hadc3,10);//等待转换完成 value = HAL_ADC_GetValue(&hadc3);//获取ADC的值 HAL_ADC_PollForConversion(&hadc3,10);//等待转换完成 value1 = HAL_ADC_GetValue(&hadc3);//获取ADC的值 printf("adc %d %d",value,value1); HAL_ADC_Stop(&hadc3); return; }
- 多通道连续扫描 使能连续转换 关闭间断转换
- ADC配置 其他的默认即可 使用stm32cubeMX配置 hadc3.Init.ScanConvMode = ENABLE; hadc3.Init.ContinuousConvMode = ENABLE; hadc3.Init.DiscontinuousConvMode = DISABLE; 采集电压 void ADC_Save_Value() { int i = 0; uint32_t value; uint32_t value1; HAL_ADC_Start(&hadc3);//开启ADC1 HAL_ADC_PollForConversion(&hadc3,10);//等待转换完成 value = HAL_ADC_GetValue(&hadc3);//获取ADC的值 HAL_ADC_PollForConversion(&hadc3,10);//等待转换完成 value1 = HAL_ADC_GetValue(&hadc3);//获取ADC的值 printf("adc %d %d",value,value1); HAL_ADC_Stop(&hadc3); return; }
- 多通道连续扫描 关闭连续转换 使能间断转换
- ADC配置 其他的默认即可 使用stm32cubeMX配置 hadc3.Init.ScanConvMode = ENABLE; hadc3.Init.ContinuousConvMode = DISABLE; hadc3.Init.DiscontinuousConvMode = ENABLE; PS:此时* Number Of Discontinuous Conversions 是配置为 1 的,所以2个通道被分成了2组,需要2次触发 采集电压 void ADC_Save_Value() { int i = 0; uint32_t value; uint32_t value1; for(i = 0;i < 2;i++) { HAL_ADC_Start(&hadc3);//开启ADC1 HAL_ADC_PollForConversion(&hadc3,10);//等待转换完成 value = HAL_ADC_GetValue(&hadc3);//获取ADC的值 printf("adc%d %d",i,value); } HAL_ADC_Stop(&hadc3); return; }
- 区别
- 在于开启adc的次数,间断的一个通道需要启动一次adc,读取一个通道的数据,其他的都是开启一次,然后可以读取多个通道数据 
#好好学习!
 
        