手机旅游网站建设,wordpress关闭缓存,网页版微信分身,qq在线登录手机版本篇博客重点在于标准库函数的理解与使用#xff0c;搭建一个框架便于快速开发 目录 ADC简介
ADC时钟配置
引脚模拟输入模式
规则组通道选择
ADC初始化
工作模式
数据对齐 触发转换方式
连续与单次转换模式
扫描模式
组内的通道个数
ADC初始化框架
ADC上电
ADC校… 本篇博客重点在于标准库函数的理解与使用搭建一个框架便于快速开发 目录 ADC简介
ADC时钟配置
引脚模拟输入模式
规则组通道选择
ADC初始化
工作模式
数据对齐 触发转换方式
连续与单次转换模式
扫描模式
组内的通道个数
ADC初始化框架
ADC上电
ADC校验 获取转换数据 ADC规则组单通道框架 AD.h AD.c ADC简介
ADCAnalog-Digital Converter模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量建立模拟电路到数字电路的桥梁12位逐次逼近型ADC1us转换时间输入电压范围0~3.3V转换结果范围0~4095 18个输入通道可测量16个外部和2个内部信号源规则组和注入组两个转换单元模拟看门狗自动监测输入电压范围
STM32F103C8T6 ADC资源ADC1、ADC210个外部输入通道 ADC时钟配置
就是配置上图的RCC时钟部分为ADC提供时钟CLOCKk信号
已知ADC都在APB2总线如图 再由RCC时钟树需要使能APB2外设的ADC时钟。ADCCLK最大为14MHz可选6分频或8分频分别提供最大12MHz和9MHz的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);//ADC1外设时钟使能
RCC_ADCCLKConfig(RCC_PCLK2_Div6);//选择时钟6分频ADCCLK 72MHz / 6 12MHz 引脚模拟输入模式 内部通道
温度传感器和通道ADC1_IN16相连接
内部参照电压VREFINT和ADC1_IN17相连接
注意 温度传感器和VREFINT只能出现在主ADC1中
外部通道
选择模拟输入模式外部的模拟信号直接作为ADCx的INy(y0~15 GPIO_InitStructure.GPIO_Mode GPIO_Mode_AIN;
GPIO初始化
STM32F103C8T6的PA0默认复用为ADC1_IN0 GPIO的其它参数的理解可以阅读下方博客这里不再赘述。 【STM32】GPIO和AFIO标准库使用框架-CSDN博客 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AIN;GPIO_InitStructure.GPIO_Pin GPIO_Pin_0; //ADC1的通道0GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStructure);
规则组通道选择
在任意多个通道上以任意顺序进行的一系列转换构成成组转换。
先学习规则组通道转换1个组里可以有0~16个通道的任意排列组合 例如可以如下顺序完成转换
构成转换的规则组
转换的序号通道号ADCxINy1通道32通道8 3 通道24通道 25通道06通道27通道28通道15 每一个规则组里的通道可以单独配置组里的序号所以单独配置几个序号就调用几个通道配置函数
参数解释
ADCxx 可以是 选择哪一个ADC 外设ADC_Channel被设置的 ADC 通道Rank规则组采样顺序ADC_SampleTime指定 ADC 通道的采样时间值
ADC转换需要时间在这里可以设置每个序号对应的通道以不同的时间采样 //配置放在规则组序列1里的通道ADC1_IN0及采样时间55.5个ADC采样周期
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5); ADC初始化
工作模式 ADC_InitStructure.ADC_Mode ADC_Mode_Independent;
数据对齐
转换结果为12位转换完成后存放在16位数据寄存器中需要选择数据左对齐还是右对齐
只有一个数据寄存器转换后的结果会被覆盖要及时取走 ADC_InitStructure.ADC_DataAlign ADC_DataAlign_Right;//右对齐 触发转换方式 ADC_InitStructure.ADC_ExternalTrigConv ADC_ExternalTrigConv_None;
连续与单次转换模式
连续转换模式 连续模式使能条件下 连续模式开启只需要触发一次就可不停的转换这时不需要查看转换完成标志位直接读取数据寄存器即可得到数据。
单次转换模式 执行一次转换后ADC停止需要重新发出触发信号再次启动转换。
ADC_InitStructure.ADC_ContinuousConvMode DISABLE;//单次转换模式 来自参考手册 ● 规则组由多达16个转换组成。规则通道和它们的转换顺序在ADC_SQRx寄存器中选择。规 则组中转换的总数应写入ADC_SQR1寄存器的L[3:0]位中。 ● 注入组由多达4个转换组成。注入通道和它们的转换顺序在ADC_JSQR寄存器中选择。注入 组里的转换总数目应写入ADC_JSQR寄存器的L[1:0]位中。 如果ADC_SQRx或ADC_JSQR寄存器在转换期间被更改当前的转换被清除一个新的启动脉冲将发送到ADC以转换新选择的组。 规则组序列一有1个通道并且配置为连续转换模式时不建议更改序列1位置的通道号。不建议这时通过更改序列1的通道号来实现多个ADCx通道转换
扫描模式
非扫描模式只转换组内的序列一位置的通道扫描模式会从序列一的通道依次转换到指定的序列号的通道组内最后一个转换完成置EOC标志位
ADC_InitStructure.ADC_ScanConvMode DISABLE;
组内的通道个数
非扫描模式时通道数为1仅在扫描模式下才需要指定大于1的数
ADC_InitStructure.ADC_NbrOfChannel 1;
ADC初始化框架 ADC_InitTypeDef ADC_InitStructure;ADC_InitStructure.ADC_Mode ADC_Mode_Independent;ADC_InitStructure.ADC_DataAlign ADC_DataAlign_Right;ADC_InitStructure.ADC_ExternalTrigConv ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_ContinuousConvMode DISABLE;ADC_InitStructure.ADC_ScanConvMode DISABLE;ADC_InitStructure.ADC_NbrOfChannel 1;ADC_Init(ADC1, ADC_InitStructure);
单个ADC框图 ADC上电 ADC_Cmd(ADC1, ENABLE);//使能ADC1ADC开始运行
ADC校验 ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。在 校准期间在每个电容器上都会计算出一个误差修正码(数字值)这个码用于消除在随后的转换 中每个电容器上产生的误差。 通过设置ADC_CR2寄存器的CAL位启动校准。一旦校准结束CAL位被硬件复位可以开始正 常转换。建议在上电时执行一次ADC校准。校准阶段结束后校准码储存在ADC_DR中。 注意 1 建议在每次上电后执行一次校准。 2 启动校准前ADC必须处于关电状态(ADON’0’)超过至少两个ADC时钟周期 直接调用即可 ADC_ResetCalibration(ADC1);while (ADC_GetResetCalibrationStatus(ADC1) SET);ADC_StartCalibration(ADC1);while (ADC_GetCalibrationStatus(ADC1) SET); 获取转换数据 uint16_t AD_GetValue(uint8_t ADC_Channel)
{ADC_RegularChannelConfig(ADC1, ADC_Channel, 1, ADC_SampleTime_55Cycles5);//在每次转换前根据函数形参灵活更改规则组的通道1ADC_SoftwareStartConvCmd(ADC1, ENABLE);//软件触发AD转换一次while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) RESET);//等待EOC标志位即等待AD转换结束return ADC_GetConversionValue(ADC1);//读数据寄存器得到AD转换的结果
} ADC规则组单通道框架 AD.h
#ifndef __AD_H
#define __AD_Hvoid AD_Init(void);
uint16_t AD_GetValue(uint8_t ADC_Channel);#endifAD.c
#include stm32f10x.h // Device headervoid AD_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_ADCCLKConfig(RCC_PCLK2_Div6); //选择时钟6分频ADCCLK 72MHz / 6 12MHzGPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AIN;GPIO_InitStructure.GPIO_Pin GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStructure);/*不在此处配置规则组序列而是在每次AD转换前配置这样可以灵活更改AD转换的通道如果要设置序列1为固定的通道在这里调用一次就可AD_GetValue中的通道配置应删除 *///ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5);ADC_InitTypeDef ADC_InitStructure;ADC_InitStructure.ADC_Mode ADC_Mode_Independent;//模式选择独立模式即单独使用ADC1ADC_InitStructure.ADC_DataAlign ADC_DataAlign_Right;//数据右对齐ADC_InitStructure.ADC_ExternalTrigConv ADC_ExternalTrigConv_None;//不用硬件触发软件触发ADC_InitStructure.ADC_ContinuousConvMode DISABLE;//连续转换失能每转换一次规则组序列后停止ADC_InitStructure.ADC_ScanConvMode DISABLE;扫描模式失能只转换规则组的序列1这一个位置ADC_InitStructure.ADC_NbrOfChannel 1; //通道数为1仅在扫描模式下才需要指定大于1的数在非扫描模式下只能是1ADC_Init(ADC1, ADC_InitStructure);ADC_Cmd(ADC1, ENABLE);//使能ADC1ADC开始运行ADC_ResetCalibration(ADC1);while (ADC_GetResetCalibrationStatus(ADC1) SET);ADC_StartCalibration(ADC1);while (ADC_GetCalibrationStatus(ADC1) SET);
}/*** 函 数获取AD转换的值* 参 数ADC_Channel 指定AD转换的通道范围ADC_Channel_x其中x可以是0/1/2* 返 回 值AD转换的值范围0~4095*/
uint16_t AD_GetValue(uint8_t ADC_Channel)
{ADC_RegularChannelConfig(ADC1, ADC_Channel, 1, ADC_SampleTime_55Cycles5);//在每次转换前根据函数形参灵活更改规则组的通道1ADC_SoftwareStartConvCmd(ADC1, ENABLE);//软件触发AD转换一次while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) RESET);//等待EOC标志位即等待AD转换结束return ADC_GetConversionValue(ADC1);//读数据寄存器得到AD转换的结果
}
文章转载自: http://www.morning.ybnzn.cn.gov.cn.ybnzn.cn http://www.morning.tnwwl.cn.gov.cn.tnwwl.cn http://www.morning.pzdxg.cn.gov.cn.pzdxg.cn http://www.morning.wfjrl.cn.gov.cn.wfjrl.cn http://www.morning.nzcys.cn.gov.cn.nzcys.cn http://www.morning.yrskc.cn.gov.cn.yrskc.cn http://www.morning.rjkfj.cn.gov.cn.rjkfj.cn http://www.morning.qtkfp.cn.gov.cn.qtkfp.cn http://www.morning.knryp.cn.gov.cn.knryp.cn http://www.morning.lmmyl.cn.gov.cn.lmmyl.cn http://www.morning.rgwz.cn.gov.cn.rgwz.cn http://www.morning.xgzwj.cn.gov.cn.xgzwj.cn http://www.morning.cxtbh.cn.gov.cn.cxtbh.cn http://www.morning.srtw.cn.gov.cn.srtw.cn http://www.morning.yzsdp.cn.gov.cn.yzsdp.cn http://www.morning.qpmwb.cn.gov.cn.qpmwb.cn http://www.morning.dpsyr.cn.gov.cn.dpsyr.cn http://www.morning.jtszm.cn.gov.cn.jtszm.cn http://www.morning.zfqr.cn.gov.cn.zfqr.cn http://www.morning.xkbdx.cn.gov.cn.xkbdx.cn http://www.morning.kgtyj.cn.gov.cn.kgtyj.cn http://www.morning.lxqyf.cn.gov.cn.lxqyf.cn http://www.morning.rnqbn.cn.gov.cn.rnqbn.cn http://www.morning.sbdqy.cn.gov.cn.sbdqy.cn http://www.morning.plfrk.cn.gov.cn.plfrk.cn http://www.morning.rwlsr.cn.gov.cn.rwlsr.cn http://www.morning.tygn.cn.gov.cn.tygn.cn http://www.morning.hymmq.cn.gov.cn.hymmq.cn http://www.morning.rzmkl.cn.gov.cn.rzmkl.cn http://www.morning.xdnhw.cn.gov.cn.xdnhw.cn http://www.morning.cznsq.cn.gov.cn.cznsq.cn http://www.morning.jjtwh.cn.gov.cn.jjtwh.cn http://www.morning.yjdql.cn.gov.cn.yjdql.cn http://www.morning.jqswf.cn.gov.cn.jqswf.cn http://www.morning.nfnxp.cn.gov.cn.nfnxp.cn http://www.morning.mzmqg.cn.gov.cn.mzmqg.cn http://www.morning.fkffr.cn.gov.cn.fkffr.cn http://www.morning.hngmg.cn.gov.cn.hngmg.cn http://www.morning.wyctq.cn.gov.cn.wyctq.cn http://www.morning.pudejun.com.gov.cn.pudejun.com http://www.morning.elsemon.com.gov.cn.elsemon.com http://www.morning.thxfn.cn.gov.cn.thxfn.cn http://www.morning.fgwzl.cn.gov.cn.fgwzl.cn http://www.morning.npxcc.cn.gov.cn.npxcc.cn http://www.morning.pqhfx.cn.gov.cn.pqhfx.cn http://www.morning.dnqpq.cn.gov.cn.dnqpq.cn http://www.morning.nkjnr.cn.gov.cn.nkjnr.cn http://www.morning.qwmpn.cn.gov.cn.qwmpn.cn http://www.morning.pwdgy.cn.gov.cn.pwdgy.cn http://www.morning.ypjjh.cn.gov.cn.ypjjh.cn http://www.morning.skbhl.cn.gov.cn.skbhl.cn http://www.morning.xhlpn.cn.gov.cn.xhlpn.cn http://www.morning.mttqp.cn.gov.cn.mttqp.cn http://www.morning.xlmpj.cn.gov.cn.xlmpj.cn http://www.morning.c7510.cn.gov.cn.c7510.cn http://www.morning.osshjj.cn.gov.cn.osshjj.cn http://www.morning.lmmyl.cn.gov.cn.lmmyl.cn http://www.morning.wlqll.cn.gov.cn.wlqll.cn http://www.morning.rgnp.cn.gov.cn.rgnp.cn http://www.morning.crtgd.cn.gov.cn.crtgd.cn http://www.morning.wdskl.cn.gov.cn.wdskl.cn http://www.morning.mcpdn.cn.gov.cn.mcpdn.cn http://www.morning.nnmnz.cn.gov.cn.nnmnz.cn http://www.morning.cyysq.cn.gov.cn.cyysq.cn http://www.morning.ksbmx.cn.gov.cn.ksbmx.cn http://www.morning.jwmws.cn.gov.cn.jwmws.cn http://www.morning.zgpgl.cn.gov.cn.zgpgl.cn http://www.morning.qrhh.cn.gov.cn.qrhh.cn http://www.morning.ygwyt.cn.gov.cn.ygwyt.cn http://www.morning.phxns.cn.gov.cn.phxns.cn http://www.morning.wflpj.cn.gov.cn.wflpj.cn http://www.morning.myhpj.cn.gov.cn.myhpj.cn http://www.morning.rxhn.cn.gov.cn.rxhn.cn http://www.morning.lxyyp.cn.gov.cn.lxyyp.cn http://www.morning.mcpby.cn.gov.cn.mcpby.cn http://www.morning.prmbb.cn.gov.cn.prmbb.cn http://www.morning.cnxpm.cn.gov.cn.cnxpm.cn http://www.morning.trbxt.cn.gov.cn.trbxt.cn http://www.morning.skcmt.cn.gov.cn.skcmt.cn http://www.morning.wmfmj.cn.gov.cn.wmfmj.cn