【STM32】HAL库 STM32CubeMX教程九---ADC

发布者:游走人间最新更新时间:2020-08-27 来源: eefocus关键字:STM32  HAL库  STM32CubeMX  ADC 手机看文章 扫描二维码
随时随地手机看文章

前言:

本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用

所用工具:

1、芯片: STM32F407ZET6/ STM32F103ZET6

2、STM32CubeMx软件

3、IDE: MDK-Keil软件

4、STM32F1xx/STM32F4xxHAL库


知识概括:

通过本篇博客您将学到:

ACD工作原理

STM32CubeMX创建ADC例程

HAL库定时器ADC函数库


《【STM32】系统时钟RCC详解(超详细,超全面)》

ADC配置
在这里插入图片描述
这个我们简单的讲解下,如果看懂上方原理讲解,看这几个配置也是很简单的

ADCs_Common_Settings          ADC模式设置
Mode     ADC_Mode_Independent
这里设置为独立模式

独立模式模式下,双ADC不能同步,每个ADC接口独立工作。所以如果不需要ADC同步或者只是用了一个ADC的时候,应该设成独立模式,多个ADC同时使用时会有其他模式,如双重ADC同步模式,两个ADC同时采集一个或多个通道,可以提高采样率

Data Alignment (数据对齐方式): 右对齐/左对齐

这个上方有讲解,数据的左右对齐

Scan Conversion Mode( 扫描模式 ) :   DISABLE

如果只是用了一个通道的话,DISABLE就可以了(也只能DISABLE),如果使用了多个通道的话,会自动设置为ENABLE。 就是是否开启扫描模式

Continuous Conversion Mode(连续转换模式)    ENABLE

设置为ENABLE,即连续转换。如果设置为DISABLE,则是单次转换。两者的区别在于连续转换直到所有的数据转换完成后才停止转换,而单次转换则只转换一次数据就停止,要再次触发转换才可以进行转换

Discontinuous Conversion Mode(间断模式)    DISABLE

因为我们只用到了1个ADC,所以这个直接不使能即可

STM32】HAL库 STM32CubeMX教程四—UART串口通信详解

在这里插入图片描述

  • 1 设置项目名称

  • 2 设置存储路径

  • 3 选择所用IDE

在这里插入图片描述
创建工程文件

然后点击GENERATE CODE 创建工程

配置下载工具

新建的工程所有配置都是默认的 我们需要自行选择下载方式,勾选上下载后复位运行
在这里插入图片描述

例程:

在main.c中加上


  /* USER CODE BEGIN 0 */

uint16_t ADC_Value;

  /* USER CODE END 0 */


在ADC初始化之后加上AD校准函数


  MX_ADC1_Init();

HAL_ADCEx_Calibration_Start(&hadc1);    //AD校准

  MX_USART1_UART_Init();

  /* USER CODE BEGIN 2 */


while中加上:


 HAL_ADC_Start(&hadc1);     //启动ADC转换

 HAL_ADC_PollForConversion(&hadc1, 50);   //等待转换完成,50为最大等待时间,单位为ms

 

 

 if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC))

 {

  ADC_Value = HAL_ADC_GetValue(&hadc1);   //获取AD值


  printf("ADC1 Reading : %d rn",ADC_Value);

  printf("PA3 True Voltage value : %.4f rn",ADC_Value*3.3f/4096);

  printf("Z小旋测试rn");

}

HAL_Delay(1000);


就可以完成正常读取

在这里插入图片描述

中断读取:


如果使能了ADC转换结束中断,并且使能了定时器中断,可以这样写:


void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)    //定时器中断回调

{

    HAL_ADC_Start_IT(&hadc1); //定时器中断里面开启ADC中断转换,1ms开启一次采集    

}


void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)    //ADC转换完成回调

{

    HAL_ADC_Stop_IT(&hadc1);        //关闭ADC

    HAL_TIM_Base_Stop_IT(&htim3);    //关闭定时器

    AD_Value=HAL_ADC_GetValue(&hadc1);  //获取ADC转换的值


    printf("ADC1 Reading : %d rn",AD_Value);

    printf("%.4f Vrn",(AD_Value*3.3/4096));     //串口打印电压信息

    HAL_TIM_Base_Start_IT(&htim3);       //开启定时器

}


函数讲解:


开启ADC 3种模式 ( 轮询模式 中断模式 DMA模式 )


• HAL_ADC_Start(&hadcx);       //轮询模式开启ADC

• HAL_ADC_Start_IT(&hadcx);       //中断轮询模式开启ADC

• HAL_ADC_Start_DMA(&hadcx);       //DMA模式开启ADC


关闭ADC 3种模式 ( 轮询模式 中断模式 DMA模式 )


• HAL_ADC_Stop()

• HAL_ADC_Stop_IT()

• HAL_ADC_Stop_DMA()


ADC校准函数 :


• HAL_ADCEx_Calibration_Start(&hadcx);      


F4系列不支持


读取ADC转换值


• HAL_ADC_GetValue()


等待转换结束函数


• HAL_ADC_PollForConversion(&hadc1, 50);


第一个参数为那个ADC,第二个参数为最大等待时间


ADC中断回调函数

• HAL_ADC_ConvCpltCallback()


转换完成后回调,DMA模式下DMA传输完成后调用


规则通道及看门狗配置


• HAL_ADC_ConfigChannel() 配置规则组通道

• HAL_ADC_AnalogWDGConfig()


关键字:STM32  HAL库  STM32CubeMX  ADC 引用地址:【STM32】HAL库 STM32CubeMX教程九---ADC

上一篇:【STM32】HAL库 STM32CubeMX教程十---DAC
下一篇:STM32之LED配置

推荐阅读最新更新时间:2024-11-16 22:21

基于IAP的STM32程序更新技术
引言 嵌入式系统的开发最终需要将编译好的代码下载到具体的微控制器芯片上,而不同厂家的微控制器芯片有不同的下载方式。随着技术的发展和应用需求的更新,用户程序加载趋向于在线编程的方式,越来越多的芯片公司提供和开放了用户更新程序的接口与方式,以提高整个系统的可靠性和可维护性。ST公司基于CortexM3内核的STM32系列产品得到了广泛应用,在许多基于STM32系列产品的开发过程中不可避免要进行用户程序的加载。本文在介绍IAP技术原理基础上,详细论述使用该技术在STM32F103ZE芯片上实现用户在线更新功能的方法,并具体分析其中可能发生异常的原因。 1 背景综述 1.1 主要程序更新方式 目前,除了直接通过仿真器或烧录器进行程
[单片机]
基于IAP的<font color='red'>STM32</font>程序更新技术
理解stm32开漏输出与推挽输出
每次看到stm32的教程,都是让点led灯,对GPIO觉着很是简单。 后来者麦知club的小车机器人项目中,屡屡碰壁,是寸步难行,读ds18b20要拉底,拉高;写Oled屏要片选,要命令。 在百度里查来查去,大都模样差不多。 今天,动手在stm32l152c的discovery板上,简单的几行代码,配合万用表,终于一解迷惑。 依旧是要cubemx配置外设和时钟,while循环里代码如下: /* USER CODE BEGIN 3 */ if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET) index = ~index; HAL_G
[单片机]
STM32单片机(10) 数码管输出实验[补] 静态(共阳)+动态(共阴)
注:使用普中科技开发板测试时,需要拔掉Boot1插口 参考手册、电路图等参见 STM32单片机学习(1) 总记 学习资料+参考手册+LED灯 静态数码管实验 /******************************************************************************* * * 软件功能: 静态数码管实验(软件延时方式) * *******************************************************************************/ #include stm32f10x.h #include de
[单片机]
TI 推出业界最高动态范围124 dB 信噪比的216 kHz采样频率立体声ADC
24 位器件的低功耗与高集成度为实现卓越专业音频性能打下良好基础 2007 年 4 月 5 日,北京讯 日前,德州仪器 (TI) 宣布推出两款 24 位 216 kHz 模数转换器 (ADC),从而进一步完善了高性能音频信号链,以满足专业数字音频录制与处理应用的需求。新型双通道器件实现了高集成度与业界最高动态范围的完美结合,在确保高达 124 dB 信噪比 (SNR) 的同时,其功耗仅为同类竞争产品的 50%。更多详情,敬请访问: http://focus.ti.com.cn/cn/docs/prod/folders/print/pcm4220.html 。 Focusrite Audio Engineering 公司产品战
[新品]
Python 和OpenMV如何玩转 STM32 MCU
如今网络边缘侧的机器学习现状如何?哪些工具可以帮助工程师收集数据并执行推断运算?在哪里可以找到ST MEMS,它们对现实生活中的产品有哪些影响?本文是我们即将举行的STM32全国研讨会系列的第二篇专题文章。在第14届STM32全国研讨会上,我们将通过应用演示、产品展示以及工程师与观众互动回答问题的方式,来与蝶粉社区近距离交流。在STM32全国研讨会专题系列报道第一部分我们着重介绍了云连接方面的用例,如一款新的智能门铃功能演示,还介绍了工业和数据安全相关应用。 今天,我们将重点探讨人工智能、计算以及感知技术。 人工智能与计算 Qeexo 和STM32Cube.AI 当今边缘机器学习解决方案的种类越来越多,本届STM32全国
[嵌入式]
意法的90纳米STM32微控制器内置独特闪存加速器
    意法半导体宣布取得两项重大技术进展,促使市场成功的STM32系列微控制器的性能和功耗获得进一步提升,这两项进展分别是:内嵌90纳米制程闪存的微控制器问世;推出业内首款针对工业标准的ARM Cortex-M3内核优化的自适应实时(ART)存储器加速器。     意法半导体的首批采用90nm嵌入式闪存制程生产的STM32微控制器的运行速度更快,功耗更低,外设集成度更高,片上存储密度更大。90nm嵌入式闪存技术的性能已经在智能卡和汽车电子IC上得到实证。意法半导体已于2009年发布了内嵌90nm 闪存的微控制器的样片。     由于ARM Cortex-M3的性能高于闪存技术,在运行频率较高时,处理器必须等待闪存,意法半
[单片机]
stm32 定时器知识总结
一 定时器的种类 STM32F103系列有11个定时器: 2个高级定时器(TIM1,TIM8) 4个通用定时器(TIM2,TIM3,TIM4,TIM5) 2个基本定时器(TIM6,TIM7) 2个看门狗定时器(IWDG,WWDG) 1个系统滴答定时器 二 定时器主要功能 基本定时器(TIM6,TIM7)的主要功能就是定时,由各自的可编程预分频器驱动。 通用定时器(TIM2~TIM5)除了基本的定时功能以外,还具有输入捕获和输出比较,产生pwm波形的功能。 高级定时器除了具有以上两种定时器的功能以外,还具有输出互补带死区的信号,以及刹车等功能。 看门狗定时器用于监测程序是否故障的,在超出一定时间程序跑飞
[单片机]
基于Blackfin处理器的继电保护完整解决方案
ADI公司推出的继电保护方案平台, 采用了目前在电力线监控系统中广泛应用Blackfi处理器 (ADSP BF518) 和新型同步采样ADC( AD7606)。方案提供了完整的硬件和软件模块,将用户从硬件平台、操作系统、协议栈以及GUI等软件开发工作中解放出来,大大缩短产品开发周期,并降低了软硬件开发难度。 继电保护系统设计挑战分析 继电保护是实现电力网络及相关设备监测保护的重要技术,向计算机化、网络化、智能化,以及保护、控制、测量和数据通信一体化发展是该领域的长期发展趋势。有关数据显示,截止到2006年底,全国220kV及以上系统继电保护装置的微机化率已达91.41%。继电保护装置的微机化趋势充分利用了先进的半导体处
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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