STM32F0xx_ADC采集电压配置详细过程
前言
关于ADC这一块的功能基本上也算是CortexM芯片的标配了。ST的每一块芯片都有这个功能,只是说因型号不同,通道数、位数等有所不同。STM8的芯片大多数都是10的,也就是说分辨率可达到:参考电压*(1/1024);STM32大多数都是12位的,也有少部分是16位的(F373)。平常采集一般的电压值,10位数都够我们使用了,除非使用在非常精密,或者说要求比较高的场合。
F0系列的芯片和F1系列的芯片差不多相似,但是F0没有ADC2、ADC3这么一说,只有ADC1,这里在编程的时候(特别是想把代码从F1移植到F0上的人要注意)。
本着免费分享的原则,如果你觉得分享内容对你有用,请关注微信公众号“EmbeddDeveloper”还有更多精彩内容等着你。
下载
ST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我的360云盘下载。关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议参考该手册,以后如果你换用一种型号芯片也方便了解。
今天的软件工程下载地址(360云盘):
https://yunpan.cn/cSULmkr3vBQUj 访问密码 14c7
STM32F0xx的资料可以在我360云盘下载:
https://yunpan.cn/cS2PVuHn6X2Bj 访问密码 8c37
准备工作
今天总结的软件工程是基于“TIM基本延时配置详细过程”修改而来,因此需要将该软件工程下载准备好。打开软件工程,新建源程序文件(adc.c 和 adc.h),在工程中添加新建的源程序文件adc.c和使用到标准外设库stm32f0xx_adc.c。添加的源代码响应的源文件代码就OK了。
数据传输原理
ADC模块是一种12位的逐次逼近型模拟数字转换器。它有多达19个通道,可测量16个外部和3个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。 ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。
配置过程详情
①RCC时钟
该函数位于bsp.c文件下面;
我个人习惯第一步配置时钟,ST官方提供的例程也是把配置时钟放在前面。关于RCC时钟的配置比较重要,有好几次我就是由于忘记配置相应RCC时钟,让我找了很久的问题,最后才发现是RCC时钟没有配置。
注意:
外设时钟不要随便添加,比如:RCC_APB1外设不要配置在RCC_APB2时钟里面【如:RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);这样能编译过,但是错误的】
我每次都提醒RCC时钟,是因为很多人就是因为时钟而导致软件运行有问题,所以,提醒更多人要注意配置RCC.
②ADC引脚配置
该函数位于adc.c文件下面;
重点注意:
引脚配置要和AD通道对应才行(请看数据手册中的引脚说明)。
③ADC配置
该函数位于adc.c文件下面;
分辨率和对齐方式决定你的计算方式、通道与上面的引脚配置需对应。
④ADC采集电压值
该函数位于adc.c文件下面;
调用这个接口就可以采集电压值。这里采样8次(根据自己情况可以选择平均多次),算平均,最后得出电压值(1000倍值)。1000倍数值是不想有小数点,方便打印输出。
说明
STM32F0的芯片软件兼容性很好,可以适用于F0其他很多型号的芯片(具体请看手册、或者亲自测试)。
今天的工程是基于工程“STM32F0xx_TIM基本延时配置详细过程”修改而来,以上实例总结仅供参考,若有不对之处,敬请谅解。
最后
如果你喜欢我分享的内容,你又想了解更多相关内容,请关注文章开头的微信公众号,新内容持续更新中,后期将会有更多精彩内容出现。
赞是一种鼓励、分享是最好的支持!
最新文章
- Django models对象的select_related方法(减少查询次数)
- 不明显的多线程编程的具体Bugs
- 生成二维码的方法,基于zxing
- 如何在ZBrush中将球体演变为头发
- 多线程之 CountDownLatch
- JixiPix 各种图像软件,很不错的说,还有affinity designer
- Linux内核中SPI/I2c子系统剖析
- ASP.NET5 静态文件
- IP V4地址分类
- 基于visual Studio2013解决算法导论之046广度优先搜索
- Dojo的UI框架bootstrap for dojo和Dojo-Bootstrap简介
- npm学习总结
- AngularJS学习篇(十六)
- Centos 6.7 KVM下安装windows 7系统
- Linux时间子系统之四:Timer在用户和内核空间流程
- MongoDB 中数据的替换方法实现 --类Replace()函数功能
- 微信小程序如何实现和微信客服通话?
- Mac zsh切换bash bash切换zsh
- JSP+Servlet+JavaBean实现数据库的增删改查
- 为什么web3 1.0 的接口有personal_*和eth_*的,两者有什么不同