STM32标准库开发——AD单通道

ADC基本结构

STM32标准库开发——AD单通道_第1张图片

AD单通道配置

开启ADC1转换器时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);

初始化ADC1要使用的对应的引脚,不同ADC转换器引脚关系图如下图

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AIN;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);

STM32标准库开发——AD单通道_第2张图片

设置ADC时钟预分频器,主频通常为72MHZ

ADC_InitTypeDef ADC_InitStruct;
ADC_InitStruct.ADC_ContinuousConvMode=DISABLE;
ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;
ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
ADC_InitStruct.ADC_Mode=ADC_Mode_Independent;
ADC_InitStruct.ADC_NbrOfChannel=1;
ADC_InitStruct.ADC_ScanConvMode=DISABLE;
ADC_Init(ADC1,&ADC_InitStruct);

使能ADC转换器

ADC_Cmd(ADC1,ENABLE);

软件校准ADC(先复位ADC后启动校准)

ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1) == SET);
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1)==SET);
ADC_SoftwareStartConvCmd(ADC1,ENABLE);

你可能感兴趣的:(stm32,嵌入式硬件,单片机)