10.[STM32]ADC中断方式-采集MQ-3酒精传感器检测的酒精浓度

🍌
🍌🍌
作者简介:大家好啊,我叫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)。

评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依点_DW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值