STM32单片机ADC库函数的定义和使用方法

发布者:快乐的成长最新更新时间:2023-09-26 关键字:STM32  单片机  ADC库函数 手机看文章 扫描二维码
随时随地手机看文章

ADC的基本概念希望各位网友查阅相应的手册,上面对ADC有比较详尽的介绍,包括误差的分析和消除。这里主要介绍ADC的基本库函数的定义和使用。


1.ADC_DeInit函数的功能是将外设ADCx的全部寄存器重设为默认值。

ADC_DeInit(ADC2);

2.ADC_Init函数的功能是根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器。其中ADC_InitTypeDef定义在stm32f10x_adc.h中。其结构体如下所示:


typedef struct

u32 ADC_Mode;//可以设置ADC_Mode

FunctionalState ADC_ScanConvMode;//规定了模数转换工作在扫描模式还是单次模式,参数可以是ENABLE和DISENABLE

FunctionalState ADC_CintinuousConvMode;//规定了模数转换工作在连续还是单次模式,参数可以是ENABLE和DISENABLE

u32 ADC_ExternalTrigConv;//定义了使用外部触发来启动规则通道的模数转换

u32 ADC_DataAlign;//规定了ADC数据向左边对齐还是右边对齐参数可以是right和left

u8 ADC_NbrOfChannel;//规定了顺序进行规则转换的ADC通道的数目。参数可以是1~16

}ADC_InitTypeDef

例:初始化ADC1(可以按照自己的需要来初始化,这里只是一个例)

ADC_InitTypeDef

ADC_InitTypeDef ADC_InitStructure;

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;

ADC_InitStructure.ADC_ScanConvMode = ENABLE;

ADC_InitStructure.ADC_CintinuousConvMode = DISENABLE;

ADC_InitStructure.ADC_ExternalTrigconv = ADC_ExternalTrigconv_T1_CC1;

ADC_InitStructure.ADC_Data_Align = ADC_DataAlign_RIGHT;

ADC_InitStructure.ADC_NbrOfChannel = 16;

ADC_Init(ADC1,&ADC_InitStructure);

3.ADC_Cmd函数的功能是使能或失能指定的ADC,其中ADC_Cmd只能在其他ADC设置函数之后被调用

ADC_Cmd(ADC1,ENABLE);

4.ADC_DMACmd函数的功能是使能或者失能指定的ADC的DMA请求。

ADC_DMACmd(ADC1,ENABLE);

5.ADC_ITConfig函数的功能是使能或者失能指定的ADC的中断,其中可以是EOC/AWD/JEOC

ADC_ITConfig(ADC2,ADC_IT_EOC|ADC_IT_AWD);

6.ADC_ResetCalibration函数的功能是重置指定的ADC的校准寄存器。

ADC_ReserCalibration(ADC1);

7.ADC_GetResetCalibrationSttaus函数的功能是获取ADC重置校准寄存器的状态。

FlagStatus Status

Status =ADC_GetResetCalibrationSttaus(ADC2);

8.ADC_StartCalibration函数的功能是开始指定ADC的校准。

ADC_StartCalibration(ADC2);

9.ADC_GetCalibrationStatus函数的功能是获取ADC的校准状态。具有返回值

FlagStatus Status;

Status =ADC_GetCalibrationStatus(ADC2);

10.ADC_SoftwareStartConvCmd函数的功能是使能或者失能指定的ADC的软件启动功能。

ADC_SoftwareStartConvCmd(ADC1,ENABLE);

11.ADC_DiscModeChannelCountConfig函数的功能是对ADC规则通道配置间断模式。其中参数可以是1~8,间断模式计数器的值。

ADC_DiscModeChannelCountConfig(ADC1,2);

12.ADC_DiscModeCmd函数的功能是使能或者失能指定的ADC规则组通道的间断模式。

ADC_DiscModeCmd(ADC1,ENABLE);

13.ADC_RegularChannelConfig函数的功能是设置ADC的规则组通道,设置他们的转化顺序和采样时间,其中ADC_Channel指定了通过本函数来设置的ADC通道,可以是0~17,ADC_SampleTime设置了选中通道的ADC采样时间。

ADC_RegularChannelConfig(ADC2,ADC_Channel_2,1,ADC_SampleTime_1Cycles5);

14.ADC_ExternalTrigConvConfig函数的功能是使能或者失能ADCx的经外部触发启动转换功能。

ADC_ExternalTrigConvConfig(ADC2,ENABLE);

15.ADC_GetConversionValue函数的功能是返回最近一次ADCx规则组的转换结果。

u16 DataValue;

DataValue = ADC_GetConversionValue(ADC2);

16.ADC_GetDuelModeConversionValue函数的功能是返回最近一次双ADC模式下的转换结果。

u32 DataValue;

DataValue =ADC_GetDuelModeConversionValue();

17.ADC_AutoInjectedConvCmd函数的功能是使能或者失能指定ADC在规则组转化后自动开始注入组转换。

ADC_AutoInjectedConvCmd(ADC2,ENABLE);

18.ADC_InjectedDiscModeCmd函数的功能是使能或者失能指定的ADC注入组间断模式。

ADC_InjectedDiscModeCmd(ADC2,ENABLE);

19.ADC_ExternalITrigInjectedConvConfig函数的功能是配置ADCx外部触发启动注入组转换功能。其中ADC_ExternalITrigConv_IT可以取多种启动触发模式

例:用定时器1的捕获比较4触发ADC1注入组转换功能。

ADC_ExternalITrigInjectedConvConfig(ADC1,ADC_ExternalITrigConv_IT_CC4);

20.ADC_ExternalITrigInjectedConvCmd函数的功能是使能或者失能ADCx的经外部触发启动注入组转换功能。

ADC_ExternalITrigInjectedConvCmd(ADC2,ENABLE);

21.ADC_SoftwareStartInjectedConvCmd函数的功能是使能或者失能ADCx软件启动注入组转换功能。

ADC_SoftwareStartInjectedConvCmd(ADC2,ENABLE);

22.ADC_GetSoftwareStartInjectedConvStatus函数的功能是获取指定ADC的软件启动注入组转换状态,会返回一个ADC软件触发启动注入转换的新状态。

FlagStatus Status;

Status =ADC_GetSoftwareStartInjectedConvStatus(ADC2);

23.ADC_InjectedChannelConfig函数的功能是设置指定ADC的注入组通道,设置他们的转化顺序和采样时间。不过先决条件是之前必须调用函数ADC_InjectedSequencerLengthConfig来确定注入转换通道的数目,特别是在通道数目小于4的情况下,先正确配置每一个通道的转化顺序。

例:配置ADC1第12通道采样周期28.5,第二个开始转换。

ADC_InjectedChannelConfig(ADC1,ADC_Channel_12,2,ADC_SampleTime_28Cycles5);

24.ADC_InjectedSequenceLengthConfig函数的功能是设置注入组通道的转换序列长度。且序列长度的取值范围是~4。

ADC_InjectedSequenceLengthConfig(ADC1,1);

25.ADC_SetInjectefOffset函数的功能是设置注入组通道的转换偏移值。选择注入通道可以是1~4.偏移量是16位值。

ADC_SetInjectefOffset(ADC_InjectedChannel_1,0x100);

26.ADC_GetInjectedConversionValue函数的功能是返ADC指定注入通道的转换结果。

u16 InjectedConversionValue;

InjectedConversionValue =ADC_GetInjectedConversionValue(ADC1,ADC_InjectedChannel_1);

27.ADC_TampSensorVrefintCmd函数的功能是使能或者失能温度传感器和内部参考电压通道。

ADC_TempSensorVrefintCmd(ENABLE);

28.ADC_GetFlagStatus函数的功能是检查指定的ADC标志位是否置1.会返回一个新的ADC_FLAG值。其中指定标志位可以取5种值。

FlagStatus Status;

FlagStatus = ADC_GetFlagStatus(ADC1,ADC_FLAG_AWD);

29.ADC_ClearFlag函数的功能是清除ADCx待处理的标志位。在使用本函数之前是调用过了ADC_GetFlagStatus函数的。

ADC_ClearFlag(ADC2,ADC_FLAG_AWD).


关键字:STM32  单片机  ADC库函数 引用地址:STM32单片机ADC库函数的定义和使用方法

上一篇:基于STM32F0的SPI通信的FLASH程序分析
下一篇:基于STM32芯片的指纹识别系统设计与实现

推荐阅读最新更新时间:2024-11-16 19:47

紫光同芯基于R52+内核的车规MCU获功能安全最高认证
汽车“新四化”的深入发展,对汽车芯片的性能表现提出更高要求。紫光新一代THA6系列MCU,最多配备6颗ARM Cortex-R52+内核(含锁步),主频最高达400MHz,内置大容量的嵌入式非易失存储器,拥有出色的实时性和多核性能表现,能够满足传统燃油车和新能源汽车在动力(引擎控制、电驱控制、电池管理等)、底盘(转向、制动等)、车身、智驾等需要高安全特性的应用需求,同时可支持域控制器、区域控制器等新的应用场景,为新的汽车电子电气架构提供良好的软硬件基础。 近日,紫光新一代THA6系列MCU通过国际权威认证机构SGS关于功能安全开发流程体系以及功能安全产品设计的评估,获得符合IS0 26262标准的ASIL D等级功能安全
[汽车电子]
紫光同芯基于R52+内核的车规<font color='red'>MCU</font>获功能安全最高认证
单片机 电子时钟(汇编)
今天很高兴,一次性就把这个电子时钟写了出来(今晚的单片机实验,记得去年自学单片机的时候,这个还真是写不出来,不过这个时钟只是静态的,不能够用手工来修改,这点还是不够完善,以后有时间了的话,我重新写一下,呵呵) count equ 9217 ;定义1s计数值,对于11.0592的晶振来说,延时10ms second equ 30h ;定义临时变量区 second_ge equ 31h second_shi equ 32h minute equ 33h minute_ge equ 34h minute_shi equ 35h hour equ 36h hour_ge
[单片机]
<font color='red'>单片机</font> 电子时钟(汇编)
STM32基础12--数模转换(DAC)
前言 在做51单片机项目时,如果需要对外围电路的压输出,往往会在51单片机上面外挂一个DAC转换芯片(例如DAC0808)。但在STM32F407中,不再需要这么干了,因为在STM32的内部就已经集成了DAC电路。 STM32中,DAC 模块是 12 位电压输出数模转换器。DAC 可以按 8 位或 12 位模式进行配置,并且可与 DMA 控制器配合使用。在 12 位模式下,数据可以采用左对齐或右对齐。DAC 有两个输出 通道,每个通道各有一个转换器。在 DAC 双通道模式下,每个通道可以单独进行转换;当 两个通道组合在一起同步执行更新操作时,也可以同时进行转换。可通过一个输入参考电压 引脚 VREF+ (与
[单片机]
<font color='red'>STM32</font>基础12--数模转换(DAC)
基于8051单片机和SJAl000芯片实现智能传感器网络的设计
前 言 随着自动化程度的提高和信息的网络化进程, 所需要的测控点和测控参量越来越多, 使得一个自动控制系统日益庞大而复杂。对于一个系统来说, 需要的传感器数目成倍增加。为了使各智能仪表与上位机能实时、高速、准确地通信, 选择较理想的现场总线则是很关键的。现场总线是开放型控制系统, 是用于现场总线仪表与控制室之间的一种全数字化、串行、双向、多站的通讯网络 。CAN 是其中很有发展前景的一种现场总线。在网络化的系统中, 每只传感器作为一个智能节点挂接在CAN 总线上, 整个系统如图1所示。 1、 CAN 总线的技术特点 a) CAN 通信速率为(5kB/s)/10km、(1MB/s)/40m ,其节点数可达110 个, 传输介质采
[单片机]
基于8051<font color='red'>单片机</font>和SJAl000芯片实现智能传感器网络的设计
51单片机8X8点阵屏显示
显示一个爱心 #include reg52.h #include intrins.h sbit DIO = P3^4;//串行数据口 sbit S_CLK = P3^5;//移位寄存器时钟 sbit R_CLK = P3^6;//输出锁存器时钟 unsigned char code table ={0xFF,0xEF,0xD7,0xBB,0x7D,0x6D,0x93,0xFF}; //♥ void send(unsigned char dat) { unsigned char i; S_CLK = 0; R_CLK = 0; for(i=0; i 8; i++) { if(da
[单片机]
基于单片机的16×64LED点阵显示屏的设计
  0 引言   LED点阵显示屏是一种简单的汉字显示器,具有价廉、易于控制、使用寿命长等特点,可广泛应用于各种公共场合,如车站、码头、银行、学校、火车、公共汽车显示等。本文详细介绍了一种低廉的16x64点阵LED显示屏的设计过程。   1 硬件系统设计   本系统采用AT89C52单片机作控制器,整个电路主要由单片机控制及其接口电路、驱动显示电路、电源电路等部分组成。为了简化显示屏电路,降低成本,本系统在单片机部分不加字库存储器。而在PC机上编辑汉字和字符显示信息,并将其转换为相应的点阵显示数据,然后通过串口(采用RS-232通信标准)送给单片机存储并进行显示处理。图1所示为其硬件系统原理图。   1.1 单片机控制
[单片机]
基于<font color='red'>单片机</font>的16×64LED点阵显示屏的设计
如何用低成本ARM Cortex-M微控制器让家电变得更安全
自2007年起,家电厂商的所有新设计必须遵守IEC60335安全标准。为确保家电设备安全可靠,特别是设备故障不能威胁用户的人身安全,这套新标准涉及十分广泛的内容,从机械系统到嵌入电子元器件均有明确规定。 电子部分参照另一个标准,即适用于各种应用领域的IEC60730自动电子控制标准。对于嵌入式系统开发人员,附件H对于嵌入式系统开发人员尤为重要,因为该附件是关于可编程器件。白色家电通常使用多个微控制器:一个微控制器负责管理控制台,另一个管理阀门和电机控制。 根据设备故障导致的危险程度,该标准将软件分为A、B、C三类。如果家电安全不依靠软件,则该家电属于A类,如室内温控器或照明控制器。相反,如果软件用于防止安全隐患,如电子点火燃气
[单片机]
如何用低成本ARM Cortex-M<font color='red'>微控制器</font>让家电变得更安全
STM32开发中的五大嵌入式系统
技术往往更新得非常快,并且总是让我们觉得学起来有难度而且有些迷茫。不过没有关系我们发烧友专注于在快乐中学习,要学习STM32,我们首先了解下五大嵌入式操作系统:μClinux、μC/OS-II、eCos、FreeRTOS和RT-thread。 μClinux μClinux是一种优秀的嵌入式Linux版本,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。 μClinux操作系统的中断管理是将中断处理分为两部分:顶半处理和底半处理。在顶半处
[单片机]
<font color='red'>STM32</font>开发中的五大嵌入式系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved