Note1:ADC需要用到的库函数
/*规则组通道配置*/
void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime)
//ADC_Channel:这个参数是指定通道,可以是通道0~17
//Rank:这个参数是规则组序列器里的次序,必须在1~16之间,对应的就是规则组里的16个序列
//ADC_SampleTime:指定通道的采样时间
/*ADC初始化*/
ADC_InitTypeDef ADC_InitStructure;
//连续转换模式:这个可以选择是连续转换还是单次转换
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
//数据对齐:指定ADC是左对齐还是右对齐,一般右对齐
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
//定义用于启动规则组转换的外部触发源
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
//ADC的工作模式:这个参数是配置ADC是工作在独立模式,还是双ADC模式(一般独立模式)
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
//通道数目:这个是指定在扫描模式下,总共会用到几个通道
ADC_InitStructure.ADC_NbrOfChannel = 1;
//扫描转换模式:这个可以选择是扫描模式还是非扫描模式
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_Init(ADC1,&ADC_InitStructure);
/*获取标志位*/
ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG)
//ADC_FLAG可以是以下参数
//ADC_FLAG_AWD: 模拟看门狗标志位
//ADC_FLAG_EOC: 规则组转换完成标志位
//ADC_FLAG_JEOC: 注入组转换完成标志位
//ADC_FLAG_JSTRT:注入组开始转换标志位
//ADC_FLAG_STRT: 规则组开始转换标志位
获取标志位ADC_GetFlagStatus函数的参数手册说明
Note2:ADC配置步骤
根据ADC基本结构图来配置
①开启时钟,包括ADC和GPIO的时钟,ADDCLK
②配置GPIO成模拟输入的模式
③配置多路开关,把左边通道接到右边的规则组里
④配置ADC转换器,用结构体来配置
⑤调用ADC_Cmd( )函数
-
1.ADC介绍
1)ADC简介
-
ADC(Analog-Digital Converter)模拟-数字转换器
-
ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁
-
12位(0~2^12-1)逐次逼近型ADC,1us转换时间(对应1MHz,STM32 ADC的最快转换频率)
-
输入电压范围:0-3.3V,转换结果范围:0-4095
-
18个输入通道,可测量16个外部(就是16个GPIO口)和2个内部信号源(内部温度传感器和内部参考电压)
-
温度传感器可以测量CPU的温度,比如你电脑可以显示一个CPU温度,就可以用ADC读取这个温度传感器来测量
-
内部参考电压是一个1.2V左右的基准电压,这个基准电压是不随外部供电电压变化而变化的,如果芯片的供电不是标准的3.3V,测量外部引脚的电压可能就不对,这时就可以读取这个基准电压进行校准,这样就能得到正确的电压值了
-
-
规则组和注入组两个转换单元(STM32 ADC的增强功能)
-
模拟看门狗自动监测输入电压范围