前言:
本文章介绍了STM32微控制器的ADC外设,介绍了ADC的底层原理以及基本结构,介绍了ADC有关的标准库函数,以及如何编写代码实现ADC对电位器电压的读取。
可以根据基本结构图来编写代码
大体流程:
1、开启RCC时钟(包括ADC和GPIO的时钟,另外ADCCLK的分频器,也需要配置)
2、配置GPIO(把需要用的GPIO配置成模拟输入模式)
3、配置多路开关(把左边的通道接入到右边的规则组列表里)
4、配置ADC转换器(用库函数结构体)
5、如果需要模拟看门狗和中断,也可以配置
6、开关控制,调用ADC_Cmd函数,开启ADC(如果需要,还可以开启校准)
ADC相关库函数介绍
1)ADCCLK的配置库函数,在rcc.h
这个函数是用来配置ADCCLK分频器的(它可以对APB2的72MHz时钟选择2、4、6、8分频,输入到ADCCLK)
void RCC_ADCCLKConfig(uint32_t RCC_PCLK2);
2)ADC的配置库函数,在adc.h
恢复出厂配置、初始化、结构体初始化
void ADC_DeInit(ADC_TypeDef* ADCx);
void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct);
用于给ADC上电
void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);
开启DMA输出信号(如果使用DMA转运数据,就得调用这个函数)
void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState);
中断输出控制
void ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState);
用于控制校准的函数:复位校准、获取复位校准状态、开始校准,获取开始校准状态(在ADC初始化之后,可以依次调用)
void ADC_ResetCalibration(ADC_TypeDef* ADCx);
FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx);
void ADC_StartCalibration(ADC_TypeDef* ADCx);
FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx);
ADC软件开始转换控制,这个就是用于软件触发的函数了,调用一下,就可以软件触发转化了
void ADC_SoftwareStartCon