STM32F10X入门指南---AD转换

首先,点击下面的链接下载我们需要使用的代码。链接

1.添加必要的文件:

之前我们说过,有三个文件是必须添加的,这三个文件分别是:startup_stm32f10x_xd.s ,stm32f10x_rcc.c ,system_stm32f10x.c。其中,前面的xd是根据你的芯片的容量来选择的。这三个文件都可以在千帆提供的代码中找到。文件路径:Core.rar\Core\STM32\Source\Must 。

另外,如果想操作IO口,必须添加千帆的一个库文件DeviceBase.cpp。文件路径:Core.rar\Core\system。

2.设置Include path

这样可以帮助编译器找到千帆库的头文件。具体的设置方法我们在前面已经说过,下面是链接:我是链接,点我

3.添加AD和串口部分的代码至工程

将千帆库文件中的AD部分的代码添加到工程中(文件:ADConvert.cpp,路径:Core.rar\Core\system)。

将千帆库文件中的串口部分的代码添加到工程中(文件:SerialPort.cpp,路径:Core.rar\Core\system)。

添加完成之后的Project如下图所示:

4.编写代码:

我们的实验是将内置的AD读取到的电压值通过串口发送到电脑端的上位机。如果你的电脑上面没有上位机(串口调试助手,可以点击这里下载)。

新建一个main.cpp(这里一定要写.cpp,而不是.c),在main函数中添加如下的代码:

#include"System.h"

ADConvert convert(0);

int main()
{
	convert.Start();
	while(1)
	{
		serial.Print("AD channel 0 :%f \n",convert.ReadVoltage());
		Delay(1000);
	}
}

先解释一下STM32F103C8的硬件的AD。千帆这里只使用了他的前8个通道(通道0~通道7)。分别对应PA0~PA7。

首先定义一个ADConvert的变量,这个变量的名字随便起,千帆起了一个convert。后面的参数是你需要使用的通道,这里千帆使用的是通道0,对应于与硬件上面的PA0。

当选定完通道之后就需要启动这次AD转换了,千帆的代码是使用的连续转换,即转换完一次之后接着进行第二次转换,直到你喊停(convert.End()函数)。当开启通道的转换之后如何获取你所需要的转换的电压值呢?千帆这里设置了一个函数convert.ReadVoltage()。这个函数是将你指定通道转换完成的电压值读出来,返回值即是电压值,为一个float类型的数值。读出电压值之后就可以将这一个电压值发送到我们的电脑端进行显示了。下面是千帆电脑上的截图:

STM32的AD转换是一个12位的,转换速度是很精确的。同时转换的速度在us之内,在我们平时的学习中已经足够了。上图一开始测量的是VCC(3.3V)的电压值。方框中是千帆将接口从VCC上面拔下来,查到GND上面时候的测量数据。为什么方框中会出现0.710596这个值呢?因为刚刚拔下的时候电压的测量线是浮空的,这时候没有一个固定的电平,所以说这个测量值肯定是无意义的了。下面的0是测量的GND的电压值。这些结果还是非常满意的。

如果你对serial这个东西不熟悉,可以看下这篇文章:链接

5.如何测量多个通道的电压值

有的人可能想了,如果我的系统中可能需要多个电压源的测量,我该怎么办呢?STM32的硬件上面提供了一个解决方案,规则组和注入组。这个实现起来比较麻烦,千帆没有实现。但是千帆在代码上提出了一种解决方案,通过软件切换的方式可以实现多个通道的电压值的测量。这也是一种分时复用的方法。首先测量0通道的电压值,然后切换电压的通道(比如说通道1),然后测量通道1的电压,周而复始,可以完成多个通道的测量。废话不多说了,下面是代码:

#include"System.h"

ADConvert convert(0);

int main()
{
	convert.Start();
	while(1)
	{
		convert.ChangeCh(0);
		serial.Print("AD channel 0 :%f \n",convert.ReadVoltage());
		convert.ChangeCh(1);
		serial.Print("AD channel 1 :%f \n",convert.ReadVoltage());
		Delay(1000);
	}
}

convert.ChangeCh(int)函数可以切换通道,他的参数是需要切换的新的通道。上面的代码中我们使用了通道0和通道1,通过软件切换的方式测量了两个通道,当然这里你也可以将8个通道的电压全部测量,只是添加几句代码的样子。下面是截图:

千帆的通道0接了GND,通道1接了VCC。

通过这样的方式测量电压是不是很简单啊。

STM32F10X入门指南---AD转换,布布扣,bubuko.com

时间: 2024-11-01 12:14:06

STM32F10X入门指南---AD转换的相关文章

JWPlayer快速入门指南(中文)

将JW Player嵌入到网页中非常的简单,只需要进行如下3个步骤: 1.解压mediaplayer-viral.zip文件,将jwplayer.js和player.swf文件拷贝到工程中: 2.在页面引入jwplayer.js文件: <script type="text/javascript" src="/jwplayer/jwplayer.js"></script> 3.将下面代码粘贴在body标签内,如下所示: <div id=&

单片机入门指南系列(十) 单片机程序下载相关知识

原文发表自我的个人主页,欢迎大家访问 http://purplesword.info/mcu-primer-10 注:本篇在写<单片机入门指南系列>之前就已经写过,现在发现这篇比较合理的位置,应该是放在<单片机入门指南系列(六) 单片机最小系统--麻雀虽小,五脏俱全>之后的,但是由于之前考虑不周,所以只好放在这里了,也就不重新修改文章的位置了. 作为基础知识补充,本篇详细介绍了串口.51单片机的ISP下载等知识,虽然这些知识并不一定要很了解也能学习单片机,但是有一些概念有时对解决问

AngularJS快速入门指南15:API

thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table.reference>thead>tr>td, table.reference>tbody>tr>td, table.reference>tfoot>tr>td { padding: 8px; line-height: 1.42857143; vertic

3D图形学理论入门指南(转)

原文地址:http://blog.sina.com.cn/s/blog_e7779a160102wpt1.html 3D图形学理论入门指南 介绍 当我还小的时候,我曾以为计算机图形学是最酷的玩意儿.但是随即我认识到,学习图形学--创建那些超级闪亮的计算机程序--比我想象的要难上许多.我四处出击,阅读OpenGL渲染管线详解之类的文章,浏览关于图形工作原理的博客.网站等,对照着教程学习,试图搞懂一切.结果呢,一无所获.当我按照NeHe的教程设置好一切,却因为错误的调用了某个glXXX()函数,导致

NHibernate 中文第一个入门指南

该文为转载内容 https://shop149484391.taobao.com/shop/view_shop.htm?spm=a1z09.1.a1zvx.d53.yoyrDX&mytmenu=mdianpu&user_number_id=1041857928 NHibernate 入门指南 标签: databasesession数据库测试domainclass 2009-12-18 19:22 3699人阅读 评论(3) 收藏 举报 分类: DotNet(5) Welcome to NH

前端自动化构建工具Webpack开发模式入门指南

Webpack Webpack是时下最流行的模块打包器 它的主要任务就是将各种格式的JavaScript代码,甚至是静态文件 进行分析.压缩.合并.打包,最后生成浏览器支持的代码 特点: 代码拆分方案:webpack可以将应用代码拆分成多个块,每个块包含一个或多个模块,块可以按需异步加载,极大提升大规模单页应用的初始加载速度 智能的静态分析:webpack的智能解析器几乎可以处理任何第三方库 Loader加载器:webpack只能处理原生js模块,但是loader可以将各种资源转换为js模块 p

转 猫都能学会的Unity3D Shader入门指南(二)

猫都能学会的Unity3D Shader入门指南(二) 关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果您在Shader开发上有所心得,很欢迎并恳请您指出文中纰漏,我会尽快改正.在之前的开篇中介绍了一些Shader的基本知识,包括ShaderLab的基本结构和语法,以及简单逐句地讲解了一个基本的shader.在具有这些基础知识后,阅读简单的sha

mxGraph进阶(一)mxGraph教程-开发入门指南

mxGraph教程-开发入门指南 概述 mxGraph是一个JS绘图组件适用于需要在网页中设计/编辑Workflow/BPM流程图.图表.网络图和普通图形的Web应用程序.mxgraph下载包中包括用javascript写的前端程序,也包括多个和后端程序(java/C#等)集成的例子.以下是mxgraph应用的几个例子.(你可以到www.longboo.com的主页下载mxgraph和更多的mxgraph实例) 电力系统案例 工作流设计器 化工系统案例 mxGraph客户端是一个图形组件,并提供

Unity3D Shader入门指南(二)

关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果您在Shader开发上有所心得,很欢迎并恳请您指出文中纰漏,我会尽快改正.在之前的开篇中介绍了一些Shader的基本知识,包括ShaderLab的基本结构和语法,以及简单逐句地讲解了一个基本的shader.在具有这些基础知识后,阅读简单的shader应该不会有太大问题,在继续教程之前简单阅读一下Un