[STM32F0xx]的AD转换驱动程序_stm32f0xx adc_in-程序员宅基地

技术标签: ADC  STM32  AD采样  AD转换  F0xx  

        STM32F0xx的AD转换程序。

        该例程使用的是PB01引脚,AD功能为ADC_IN9,查数据手册,如下图所示。

        首先初始化引脚:

        

void adc_init( void )
{
    GPIO_InitTypeDef GPIO_InitStructure;
    
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_ADC1, ENABLE );
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init( GPIOB, &GPIO_InitStructure );
    
    ADC_Configuration();
}

 

        然后,初始化ADC的功能:

void ADC_Configuration( void )
{
    ADC_InitTypeDef ADC_InitStructure;
    
    ADC_DeInit( ADC1 );
    ADC_StructInit( &ADC_InitStructure );
    
    ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
    ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;
    ADC_Init( ADC1, &ADC_InitStructure );
    
    ADC_ChannelConfig( ADC1, ADC_Channel_9, ADC_SampleTime_239_5Cycles );
    
    ADC_GetCalibrationFactor( ADC1 );
    
    ADC_Cmd( ADC1, ENABLE );
    
    while ( !ADC_GetFlagStatus( ADC1, ADC_FLAG_ADRDY ) );
    ADC_StartOfConversion( ADC1 );
}

         ADC_ChannelConfig( ADC1, ADC_Channel_9, ADC_SampleTime_239_5Cycles );

        其中ADC的通道配置函数,配置为ADC1,通道9,采样周期为ADC_SampleTime_239_5Cycles。

        

        接下来直接使用获取AD值的函数,ADC_GetConversionValue( ADC1 );  该函数位于#include "stm32f0xx_adc.h"的文件中。

        下述函数为获取8次ADC的值,求和后求平均,然后转换为电压值(单位:V)avg*3300/4096 。


uint32_t ADC_Check( void )
{
    uint32_t ResultVolt = 0;
    uint8_t i;
    
    for ( i = 0; i < 8; i++ )
    {
        while ( ADC_GetFlagStatus( ADC1, ADC_FLAG_EOC ) == RESET );
        ResultVolt += (uint32_t)ADC_GetConversionValue( ADC1 );
    }
    // 求平均
    ResultVolt = ResultVolt >> 3;
    // 求得1000倍电压值
    //ResultVolt = (ResultVolt*3300) >> 12;
    
    return ResultVolt;
}

 

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/d4l6c8/article/details/115478546

智能推荐

db2游标与mysql游标区别_DB2游标使用注意事项-程序员宅基地

文章浏览阅读70次。1、游标的一般使用步骤 (1)定义游标 EXEC SQL DECLARE MY_CURSOR CURSOR FOR........ (2)打开游标 EXEC SQL OPEN MY_CURSOR1、游标的一般使用步骤(1)定义游标EXEC SQL DECLARE MY_CURSOR CURSOR FOR........(2)打开游标EXEC SQL OPEN MY_CURSOR ;(3)读取游标E..._db2游标更新

正则表达式_非贪婪皮-程序员宅基地

文章浏览阅读3.1k次。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。_非贪婪皮

arcgis NoData区域去除(去除影像黑边)_arcmap栅格数据导png时nodata变黑边-程序员宅基地

文章浏览阅读8.7k次,点赞9次,收藏57次。问题描述:裁剪操作或其他一些操作后影响会出现NoData区域,在制图时不好看。如下图红色区域为NoData区域,更改Arcgis显示设置无效A:方法是ArcTools->Spatial Analyst Tools->Map Algebra->Single Output Map Algebra(就是栅格计算器).算法表达式为: Con(IsNull([raster]),0,[raster])。注意大小写其中[raster]是输入栅格名称。这个表达式的效果是将图像中N._arcmap栅格数据导png时nodata变黑边

Java中的native方法的使用_native修饰方法-程序员宅基地

文章浏览阅读7.9k次,点赞25次,收藏106次。1.关于native关键字想必读者已经了解过native关键字了。这里笔者就大致囊括一下,被native关键字修饰的方法叫做本地方法,本地方法和其它方法不一样,本地方法意味着和平台有关,因此使用了native的程序可移植性都不太高。另外native方法在JVM中运行时数据区也和其它方法不一样,它有专门的本地方法栈。native方法主要用于加载文件和动态链接库,由于Java语言无法访问操作系统底层信息(比如:底层硬件设备等),这时候就需要借助C语言来完成了。被native修饰的方法可以被C语言重写。2.使_native修饰方法

Thread类-程序员宅基地

文章浏览阅读1.3w次,点赞7次,收藏60次。 1 start方法  start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程来执行用户定义的子任务,在这个过程中,会为相应的线程分配需要的资源。  2 run方法  run()方法是不需要用户来调用的,当通过start方法启动一个线程之后,当线程获得了CPU执行时间,便进入run方法体去执行具体的任务。注意,继承Thread类必须重写run方法,在run方法中定义具体要..._thread类

oracle数据落地到gp,使用ora2pg迁移oracle数据到greenplum-程序员宅基地

文章浏览阅读377次。安装ora2pg条件1、perl版本5.10以上2、安装DBD::Oracle3、安装DBI4、安装DBD::Pg一、安装相关软件支持1、安装DBI#下载https://metacpan.org/release/DBI上传到服务器并解压出来DBI-1.637.tar.gz[ root@bigdata01 ~]$ lltotal 592-rw-r--r-- 1 gpadmin gpadmin 596..._ora2pg greenplum

随便推点

TypeError: rescale() got an unexpected keyword argument ‘multichannel‘_typeerror: gaussian() got an unexpected keyword ar-程序员宅基地

文章浏览阅读1.5k次,点赞6次,收藏4次。运行出现错误TypeError: rescale() got an unexpected keyword argument 'multichannel'如果为 None,则假定图像是灰度(单通道)图像。否则,此参数指示数组的哪个轴对应于通道。将multichannel=True改成channel_axis=-1。scikit-image新版本已经废弃了multichannel函数。_typeerror: gaussian() got an unexpected keyword argument 'multichannel

对于Android虚拟机启动失败“The emulator process for AVD Nexus_5X_API_30 was killed”的解决方案_the emulator process for avd api_30 was killed.-程序员宅基地

文章浏览阅读8.4k次,点赞5次,收藏31次。The emulator process for AVD Nexus_5X_API_30 was killed_the emulator process for avd api_30 was killed.

swift—国际化_swiftui 怎么引用infoplist.strings-程序员宅基地

文章浏览阅读1.8k次。一、APP名称国际化第一步:如图,添加所需要的语言第二步:创建名为 InfoPlist.strings 的文件第三步:选中 InfoPlist.string,点击Localize按钮,选着以那种语言为基础。第四步:在文件中填写对应的名称(CFBundleDisplayName = “CHA”;)然后再设置-&amp;amp;amp;gt;通用-&amp;amp;amp;gt;语言与地区更改选过的语言查看效果。二、APP文字国际化..._swiftui 怎么引用infoplist.strings

file.exists(),file.isFile()和file.isDirectory()的区别-程序员宅基地

文章浏览阅读2.6w次,点赞34次,收藏103次。file.exists(),file.isFile()和file.isDirectory()的区别你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,M_file.exists

JavaWeb-通过表格显示数据库的信息(jsp+mysql)_javaweb数据库数据显示在表单-程序员宅基地

文章浏览阅读1.2w次,点赞14次,收藏113次。login.jsp&lt;%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&gt;&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;&lt;html&gt;&lt;head&gt_javaweb数据库数据显示在表单

异常账号检测汇总_异常登录数据集-程序员宅基地

文章浏览阅读2.5k次。账户异常检测_异常登录数据集