文章目录
🍌
🍌🍌
作者简介:大家好啊,我叫DW,每天分享一些我新学到的知识,期待和大家一起进步
🍋
🍋🍋
系列专栏:STM32
🍎
🍎🍎
🍎🍎🍎
🌞小实验目标:利用ADC功能获取MQ-3酒精传感器采集的数据🌞
🍊如有写得不好的地方欢迎大家指正🍊
🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎
每天写点东西,记录下学习的过程,慢慢积累,每天都可以进步一点点
🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎
创作时间:🍊🍊🍊2022年4月27日🍊🍊🍊
1. ADC介绍
12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。
🎵🎵小提示:
ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。
本次实验用到的是ADC1的通道0,它对应着PA0引脚,ADC的引脚分布图如下:

1.1 时钟配置及设置模拟输入
ADC1挂载在APB2时钟总线上,RCC控制器为ADC时钟提供一个专用的可编程预分频器。STM32系统时钟为72Mhz,由于ADC的输入时钟不得超过14MHz,故我们需要利用函数RCC_ADCCLKConfig将72Mhz分频,我选择6分频。查看STM32固件库使用手册,里面包含分频器的具体参数介绍和使用例程:

STM32F103 的 ADC 1的通道 0 在 PA0 上,所以,我们先要使能 PORTA 的时钟,然后设置 PA0为模拟输入。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1|RCC_APB2Periph_AFIO,ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);//72/6=12Mhz
GPIO_InitStructure.GPIO_Pin = ADC1_Pin;//宏定义PA0
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//模拟输入
GPIO_Init(ADC_PROT,&GPIO_InitStructure);
1.2 ADC初始化
在库函数中是通过函数 ADC_Init 实现的,下面我们看看其定义:
void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
从函数定义可以看出,第一个参数是指定 ADC 号。这里我们来看看第二个参数是通过设置结构体成员变量的值来设定参数。
这个结构体里定义了6个参数:
第一个:ADC模式选择,包括独立模式和,注入同步模式等等。
我选择独立模式( ADC_Mode_Independent)
第二个:是否开启扫描模式,我使用的是单通道单次转换,所以这里我们选择不开启(DISABLE)。
第三个:是否开启连续转换模式我选择开启连续转换模式(ENABLE)。

最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



