stm32的ADC单通道单次使用
ADC通道与引脚对应关系

stm32f1没有内部温度传感器
单次ADC采集流程
1.开启对应时钟和ADC1时钟,设置PA1为模拟输入
1 2 3 4 5 6 7 8 9 10
| RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); RCC_ADCCLKConfig(RCC_PCLK2_Div6); GPIO_InitTypeDef ADC_PA1; ADC_PA1.GPIO_Pin = GPIO_Pin_1; ADC_PA1.GPIO_Mode = GPIO_Mode_AIN; ADC_PA1.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &ADC_PA1);
|
2.复位ADC1,同时设置ADC1参数
1 2 3 4 5 6 7 8
| ADC_DeInit(ADC1); adc1_1.ADC_Mode = ADC_Mode_Independent;// adc工作模式 独立模式 adc1_1.ADC_ContinuousConvMode = DISABLE;// 连续转换是否开启 adc1_1.ADC_DataAlign = ADC_DataAlign_Right;// 数据对齐方式 adc1_1.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;// 触发转换方式 软件触发 adc1_1.ADC_ScanConvMode = DISABLE;// 扫描模式是否开启 adc1_1.ADC_NbrOfChannel = 1;// 转换通道数目 ADC_Init(ADC1, &adc1_1);
|
3.使能ADC
4.配置规则通道参数
1 2
| ADC_RegularChannelConfig(ADC1, channel, 1, ADC_SampleTime_7Cycles5);
|
5.开启软件转换
1
| ADC_SoftwareStartConvCmd(ADC1,ENABLE);
|
6.等待转换完成,读取ADC值
1
| ADC_GetConversionValue(ADC1);
|