1.单次采集模式

  1.在STM32CUBMX中设置为单次采集模式

  2.在C文件中用HAL_ADC_START()函数启动ADC

  3.用HAL_ADC_PollForConversion()延时等待采集完成,一般10MS即可

  4.用HAL_IS_BIT_SET(HAL_ADC_STATE(),HAL_ADC_STATE_REG_EOC)判断ADC转换是否完成,如果完成置1

  5.接收数据,在主程序中启动ADC自动校准程序HAL_ADCEx_Calibration_Start(&hadc);注意此程序再HAL_ADC_EX.H中

2.连续采集模式

  1.在STM32CUBMX中设置为连续采集模式

  2.在main函数中只需启动一次HAL_ADC_START()函数

  3.在C文件中用do while函数反复循环,并需要延时以及判断标志位

  

#include "bsp_adc.h"

void ADC_Demo(void)
{ uint16_t ADC_Temp1=;
uint32_t ADC_Tempsum=;
float ADC_Temp2=;
uint8_t i=; do{ HAL_ADC_PollForConversion(&hadc,);
if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc),HAL_ADC_STATE_REG_EOC))
{
ADC_Tempsum += HAL_ADC_GetValue(&hadc);
i++;
}
}while(i<); ADC_Temp1 =ADC_Tempsum/;
ADC_Temp2 = (float)ADC_Temp1*3.3/;
printf("ADC采集电压值= %f V\r\n",ADC_Temp2);
printf("ADC采集电压值= %d \r\n",ADC_Temp1);
}

3.连续采集中断模式

  1.在STM32CUBMX中ADC的选项内部NVIC下面配置中断打钩

  2.在main函数中用HAL_ADC_Start_IT(&hadc)函数开启ADC采集以及ADC中断;

  3.在pbdata.c中调用中断回调函数HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc);每次采集完成就会中断一次

  

//下面为公共文件
#include "pbdata.c"
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
static uint8_t i=;
if(i<)
{
ADC_try[i++]=HAL_ADC_GetValue(hadc);
}
else
i=;
} //下面为bsp_adc.c文件
void ADC_Demo(void)
{
uint8_t i;
uint16_t ADC_Temp1=;
float ADC_Temp2=;
uint16_t ADC_num=;
for(i=;i<;i++)
{
ADC_num+=ADC_try[i];
}
ADC_Temp1=ADC_num/;
ADC_Temp2=ADC_Temp1*3.3/;
printf("ADC采样平均值= %f V\r\n",ADC_Temp2); }

  

ADC新库的更多相关文章

  1. Bonobo创建新库出错,解决方案

    创建新库出错如下: Native library pre-loader is trying to load native SQLite library "D:\wwwroot\localho ...

  2. openerp模块收藏 auto_setup 自动帮你完成建新库时必做几个操作(转载)

    auto_setup 自动帮你完成建新库时必做几个操作 原文:http://shine-it.net/index.php/topic,6777.0.html 模块地址: https://github. ...

  3. mysql:创建新库,新表,查看character

    创建新库create database wenda; 创建新表drop table if exists `user`;create table `user`( `id` int(11) unsigne ...

  4. odoo XMLRPC 新库 OdooRPC 尝鲜

    无意中发现了python居然有了OdoRPC的库,惊喜之下赶紧尝试一番,比XMLRPC简洁了不少,机制看样子是利用的JsonRPC. #原文出自KevinKong的博客http://www.cnblo ...

  5. GIT 旧库迁移到新库

    1.在gitlab创建新项目,得到SSH地址2.用gitextent打开旧项目,记得所有分支合并成一个(如果确实无法合并,则需要一个个复位推送)3.复位到需要推送的节点分支4.打开菜单栏的档案库,管理 ...

  6. g2o扩展,然后重新编译生成新库。

    orb作者有g2o扩展,g2o原作者也有g2o扩展,等各项基本功扎实以后,考虑把他们整合在一起,再加上高博扩展的g2o,统一cmake,make,然后能make install 正常使用,就最好了.

  7. 介绍一个新库: Norns.Urd.HttpClient

    Norns.Urd.HttpClient Norns.Urd.HttpClient 基于AOP框架 Norns.Urd实现, 是对 System.Net.Http下的 HttpClient封装,让大家 ...

  8. HAL驱动库学习-ADC

    如何使用ADC驱动库 1  实现如下两个函数     a: HAL_ADC_MspInit()使能ADC时钟,设置时钟源, 使能ADC Pin,设置为输入模式,可选 DMA,中断     b:HAL_ ...

  9. 如何使用开源库,吐在VS2013发布之前,顺便介绍下VS2013的新特性"Bootstrap"

    刚看到Visual Studio 2013 Preview - ASP.NET, MVC 5, Web API 2新功能搶先看 看了下VS2013带来的"新特性",直觉上看,除了引 ...

随机推荐

  1. .net手动编写Windows服务

    1,打开VS,新建一个windows服务程序.项目名称自定义,我这里用的默认名称:Service1 2,打开Service1,按F7查看代码.代码里有三个方法:public Service1().pr ...

  2. foo是什么?

    在英文程序员社区里,foo bar baz这些词是常用于作为占位符而使用的.要查wiki的话,这项更合适:http://en.wikipedia.org/wiki/Metasyntactic_vari ...

  3. (简单的物理题)Bungee Jumping

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1155 Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  4. 对ConditionQueue和锁的理解

    1. 什么时候使用conditionQueue 使用conditionQueue的一个最基本的条件是,操作和状态相关,而且是多线程同时访问的状态. 也就是说在使用conditionQueue的时候, ...

  5. Python WebDriver 文件上传(二)

    今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python WebDriver 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是 ...

  6. CGLIB实现动态代理

    JDK动态代理和CGLIB字节码生成的区别? * JDK动态代理只能对实现了接口的类生成代理,而不能针对类 * CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法   因为是继承 ...

  7. persona 典型用户

    1.姓名:王涛 2.年龄:22 3.收入:基本无收入 4.代表用户在市场上的比例和重要性:王涛为铁道学生.本软件的用户主要是学生和老师,尤其是广大的铁大学子,所以此典型用户的重要性不言而喻,而且比例相 ...

  8. task4: 结对编程-词频统计[修改版]

    问题描述: 读取一个文件,统计其中单词出现次数,并按从高到低的顺序显示,相同顺序的字典序排列. 思路: 基于上次的程序用正则提取出文本里的单词,然后利用字典计数(先get,为null则置1,不为nul ...

  9. 如何搭建eclipse+maven环境

    Maven这个个项目管理和构建自动化工具,越来越多的开发人员使用它来管理项目中的jar包.本文仅对Eclipse中如何安装.配置和使用Maven进行了介绍.完全step by step. 如果觉得本文 ...

  10. 使用jdbc的方式访问kylin cube的数据

    使用jdbc的方式访问kylin cube的数据 引用kylin相关的jar包 <dependency> <groupId>org.apache.kylin</group ...