查看《STM32中文参考手册》里ADC的介绍和特性

STM32的ADC最大转换速率为1Mhz,即1us,在ADCCLK=14M,采样周期为1.5个ADC时钟下得到。当ADC的时钟超过14M时,将导致结果准确度下降。

规则通道相当于正常运行的程序。注入通道就相当于中断。因此注入通道的转换可以打断规则通道的转换,在注入通道被转换完成之后,规则通道才得以继续转换。

单次、连续、扫描模式的理解

举例,用ADC1规则通道的顺序为CH0,CH1,CH2,CH3。

1、非扫描模式

在单次转换模式下,启动ADC1,则①开始转换CH0,转换完成后停止,等待ADC的下一次启动,继续从第①步开始转换。

在连续转换模式下,启动ADC1,则①开始转换CH0,转换完成后回到第①步。

2、扫描模式

在单次转换模式下,启动ADC1,则

①开始转换CH0;

②转换完成后自动开始转换CH1;

③转换完成后自动开始转换CH2;

④转换完成后自动开始转换CH3;

⑤转换完成停止,等待ADC的下一次启动下一次ADC启动后从第①步开始转换。

在连续转换模式下,启动ADC1,则

①开始转换CH0;

②转换完成后自动开始转换CH1;

③转换完成后自动开始转换CH2;

④转换完成后自动开始转换CH3;

⑤转换完成后返回第一步。

下面以规则通道的单次转换为例。

ADC初始化配置示例:

void Adc_Init(void)
{   ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1, ENABLE );   RCC_ADCCLKConfig(RCC_PCLK2_Div6);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_Init(GPIOA, &GPIO_InitStructure);   ADC_DeInit(ADC1);ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;ADC_InitStructure.ADC_ScanConvMode = DISABLE;ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfChannel = 1;ADC_Init(ADC1, &ADC_InitStructure);  ADC_Cmd(ADC1, ENABLE);ADC_ResetCalibration(ADC1);while(ADC_GetResetCalibrationStatus(ADC1));ADC_StartCalibration(ADC1);while(ADC_GetCalibrationStatus(ADC1));
}   

单次转换获取ADC值示例:

u16 Get_Adc(u8 ch)
{ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5);          ADC_SoftwareStartConvCmd(ADC1, ENABLE);while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));return ADC_GetConversionValue(ADC1);
}

通常我们不会直接使用单次采集得到的ADC,而是多采集几次,可以求算术平均值,也可以去掉一个最高值和一个最低值再求算术平均值。这样处理后得到的ADC值更可靠。

代码示例:

u16 Get_Adc_Average(u8 ch, u8 times)
{u32 temp_val = 0;u8 t;for(t = 0; t < times; t++){temp_val += Get_Adc(ch);delay_ms(5);}return (temp_val / times);
}

获取电压值是ADC常见的应用,计算公式为:U = adc_value * (3.3 / 4096)。 STM32 ADC的分辨率为12,所以=4096。3.3V为参考电压值,注意不是VCC!

正点原子战舰开发板ADC参考电压电路如下

可以简单理解为VDDA就是ADC的参考电压值,即3.3V。

《STM32中文参考手册》里ADC引脚的定义

STM32F1笔记(十一)ADC相关推荐

  1. Apache Nutch 1.3 学习笔记十一(页面评分机制 OPIC)

    1. Nutch 1.3 的页面评分机制 Nutch1.3目前默认还是使用OPIC作为其网页分数算法,但其之后,已经引入了PageRank-like算法,以弥补OPIC算法的不足,目前OPIC算法还是 ...

  2. 吴恩达《机器学习》学习笔记十一——应用机器学习的建议

    吴恩达<机器学习>学习笔记十一--应用机器学习的建议 一.训练完模型后下一步要做什么 二.评估算法与模型选择 1.训练集与测试集 2.训练/测试步骤 3.模型选择 4.数据集新的划分--验 ...

  3. 吴恩达《机器学习》学习笔记十一——神经网络代码

    吴恩达<机器学习>学习笔记十一--神经网络代码 数据准备 神经网络结构与代价函数· 初始化设置 反向传播算法 训练网络与验证 课程链接:https://www.bilibili.com/v ...

  4. ROS学习笔记十一:ROS中数据的记录与重放

    ROS学习笔记十一:ROS中数据的记录与重放 本节主要介绍如何记录一个正在运行的ROS系统中的数据,然后在一个运行的系统中根据记录文件重新产生和记录时类似的运动情况.本例子还是以小海龟例程为例. 记录 ...

  5. 《C++游戏开发》笔记十一 平滑动画:不再颤抖的小雪花

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9430645 作者:七十一雾央 新浪微博:http:// ...

  6. Apache Nutch 1.3 学习笔记十一(页面评分机制 LinkRank 介绍)

    下面是Google翻译的http://wiki.apache.org/nutch/NewScoring内容,是关于Nutch 新的链接分数算法的说明,有点类似于Google的PageRank,这里有其 ...

  7. Vue学习笔记(十一)

    1.Vue学习笔记(十一) 文章目录 1.Vue学习笔记(十一) 1.1Vue_配置代理_方式 1.1.0演示问题 1.1.1运行node server1 1.1.2运行node server2 1. ...

  8. 转一篇干货 来至ADI的应用笔记 高速ADC PCB布局布线技巧

    转一篇干货 来至ADI的应用笔记 高速ADC PCB布局布线技巧 PCB设计规范与指南, 高频高速PCB设计 by xfire 在高速模拟信号链设计中,印刷电路板(PCB)布局布线需 要考虑许多选项, ...

  9. Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)

    Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程) 一.TCP服务器(一请求一线程) 的原理 二.完整代码 三.测试 四.补充 一.TCP服务器(一请求一线 ...

  10. Polyworks脚本开发学习笔记(十一)-玩转获取参数(GET)与设置参数

    Polyworks脚本开发学习笔记(十一)-玩转获取参数(GET)与设置参数 Polyworks采用了脚本语言作为二次开发的工具,因此语言格式上非常规范和统一.其中一个重要的特点就是,几乎所有的对象都 ...

最新文章

  1. 资本主义社会是不存在人道的
  2. C++ new、delete、malloc、free关键字的关系
  3. UVA1601The Morning after Halloween 单向加双向bfs
  4. 用画小狗的方法来解释Java中的值传递
  5. BugkuCTF-WEB题cookie欺骗
  6. MYSQL导出数据报错ERROR 1290 (HY000) 和 ERROR 1 (HY000)
  7. VMware NSX词汇表
  8. 机器学习笔记 增强学习与马尔科夫模型(1)
  9. 一、C语言[typedef、结构体、共用体、枚举体]
  10. 微信小程序 - 获取汉字拼音首字母(汉字英文首字母)
  11. 《微服务设计》(二)---- 演变式架构师
  12. Alevin——虚拟网络仿真平台
  13. 【2020年总结】但行好事,莫问前程——纪念煎熬与快乐并存的一年
  14. Flutter Text组件 文字的对齐、数字和字母对齐中文
  15. c 语言生成一个随机4位数,PLC如何产生一个随机数(含代码)
  16. Python 3.0 抢“鲜”体验
  17. [翻译角]Headline English: A Captain Should Be Pitch Perfect at a Multitude of Skills (ESLPOD Blog)...
  18. 2022年高教社杯全国大学生数学建模国赛B题思路详解
  19. leeCode动态规划(矩阵求最大正方形面积)
  20. 通达信指标公式颜色代码的四种写法(COLOR/RGB)

热门文章

  1. axios vue 加载效果动画_vue中使用axios拦截器实现数据加载之前的loading动画显示 @劉䔳...
  2. u盘显示项目不在计算机zhng,能装在u盘上的操作系统有哪些?
  3. 从WEB应用的角度,一个应用都需要维护一些不同作用范围的状态, 请问下面哪些状态作用域是WEB应用特有的:( )
  4. mysql按日、周、月、年分别统计数据
  5. NodeJS的安装与使用
  6. Vue 状态管理 Vuex
  7. elementUI之switch应用的坑
  8. flex 学习篇 ---- 导航类容器
  9. re正则表达式公式讲解5
  10. thinkPHP利用ajax异步上传图片并显示、删除