基于stm32+HAL库的ADC电压采集实验

这篇具有很好参考价值的文章主要介绍了基于stm32+HAL库的ADC电压采集实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

实验目的,使用stm32的adc采集stm32开发板的3v3、GND电压,验证adc采集功能。


废话必说

只会用if的大神提醒您,敌军还有30秒到达战场,碾碎他们!白银局不要怕!

一、准备工作

软件:keil5、stm32cubemx、串口调试助手

硬件:stm32f103系列的开发板、杜邦线*1、串口工具

仅此而已!!!正好6神

二、配置步骤

1、cubemx配置端口生成代码(就像我们打游戏设置一样这里不过多解释了!)

1、打开cubemx 选择完你用的芯片就到了这里啦这里我以stm32c8t6为例:

    选择serial wire模式

基于stm32+HAL库的ADC电压采集实验

 2、时钟配置(这里先不配置参数,因为选完adc通道还需要配置)

基于stm32+HAL库的ADC电压采集实验

 3、当然需要万能的串口打印啦(用于我们调试完查看实验结果的功能)选择异步通讯,其他参数默认即可;

基于stm32+HAL库的ADC电压采集实验

 4、重头戏来啦!这就是我们用的外设接口啦这里我们选择ADC1、通道1其他参数默认即可;

基于stm32+HAL库的ADC电压采集实验

 5、前面讲到因为又adc的加入时钟频率我们最后配置成72mhz,adc就自动分频了。

基于stm32+HAL库的ADC电压采集实验

 6、上面已经配置完成了所有初始化需要的文件那么现在我们写个英文的工程名称、选择开发环境mdk也就是我们用的keil啦!

基于stm32+HAL库的ADC电压采集实验

 7、让生成的代码中包含。.c、.h文件然后生成代码! 点open project自动打开keil

基于stm32+HAL库的ADC电压采集实验

2.添加代码

1.首先main.c中添加获取函数

  while (1)
  {  
		
	  adc_get_vcc();
      delay_ms(1000);//可以换成HAL_Delay
	 
  } 

2.adc.c中添加包含头文件和变量以及函数

#include "stdio.h"           //  添加头文件用于打印
	
	float adcy;              //定义变量
	uint16_t adcx=0;
/* 
   函数定义:获取实际电压

   返回值:无
*/
uint32_t adc_get_vcc(void)
 {
	 adcx =  adc_get();              //获取到ad转换后的数字量
	 printf("数字量:%d",adcx );        //打印出数字量
	 adcy = (float)adcx*3.3/4096;    //将数字量转化成实际电压
	 printf("实际电压:%f",adcy );
	 delay_ms(100);                  //可以换成HAL_Delay(100);	 
 }

/* 
   函数定义:获取adc转换完成后的数据

   返回值:uint32_t型的模拟数值
*/
uint32_t adc_get(void){

    HAL_ADC_Start(&hadc1);                        //启动adc
  	HAL_ADC_PollForConversion(&hadc1,10);         //等待adc转换完成
   	return ((uint16_t)HAL_ADC_GetValue(&hadc1));  //返回ad转化后的数字量
	
}

 3.adc.h添加函数声明

void adc_get_vcc(void);
uint32_t adc_get(void);

4.urat.c里面包含头文件和重写打印函数

#include "stdio.h"

int fputc(int ch, FILE *f) {
	HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
	return ch;
}

 3、烧录并查看结果

烧录要提一嘴的是:需要勾选USE MICROLIB!不然串口会不打印!基于stm32+HAL库的ADC电压采集实验

查看实验结果:

实验条件条件1:杜邦线将引脚PA1接GND,实验结果:实际电压0.000000。

基于stm32+HAL库的ADC电压采集实验

 

实验条件条件2:杜邦线将引脚PA1接3v3, 实验结果:实际电压3.2......v左右。

基于stm32+HAL库的ADC电压采集实验

结论:实验结果显然符合实验目的。


 

总结

本文主要简单讲解了ADC的配置步骤当然,ADC也可以通过中断方式、DMA模式传输。这里没有做更多的说明,后面在陆续出文章。我深知这些虽然很简单但当初也是这么一步步艰难走来的所以不要放弃、一点点学。文章来源地址https://www.toymoban.com/news/detail-413954.html

到了这里,关于基于stm32+HAL库的ADC电压采集实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32笔记_10(ADC—电压采集)

    STM32f103 系列有 3 个 ADC ,精度为 12 位 ,每个 ADC 最多有 16 个外部通道 。其中 ADC1 和ADC2 都有 16 个外部通道, ADC3 根据 CPU 引脚的不同通道数也不同,一般都有 8 个外部通道。         ADC 输入范围为: VREF- ≤ VIN ≤ VREF+ 。由 VREF-、 VREF+ 、 VDDA 、 VSSA、这四个外部引脚决定

    2024年02月04日
    浏览(29)
  • STM32F103_ADC电压采集

    ADC寄存器 STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器。 它有 18 个通道,可测量 16 个外部和 2 个内部信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。 模拟看门狗特性允许应用程序检测输入

    2023年04月08日
    浏览(23)
  • 基于STM32的ADC采样及各式滤波实现(HAL库,含VOFA+教程)_数据采集滤波算法stm32(3)

    2.2 VOFA+使用方法 VOFA+ 的数据协议引擎有 3种 : FireWater , JustFloat , RawData 。每种数据协议引擎都有自己特殊的使用效果,读者朋友可以根据自己的实际需要去选择使用。作者这里主要给大家演示一下 FireWater协议 下的VOFA+使用效果和方法。 FireWater协议 是 CSV风格 的字符串流,

    2024年04月23日
    浏览(36)
  • STM32使用内部参考电压提高ADC采集准确度

    我们在使用ADC采集外部电压时,一般默认参考电压为MCU的供电电压,例如单片机供电电压为3.3V时,我们计算采集电压的公式为: 但是如果因为某些原因导致的供电不稳定,而我们任然按照3.3V计算,ADC采集计算出来的电压就会出现误差。 在STM32手册中关于ADC的介绍中提到使用

    2024年02月15日
    浏览(23)
  • STM32_HAL库—ADC采集数据

    目录 一、简介 二、实例 1. (单通道、阻塞式)配置及实现方式 2. (单通道、中断式)配置及实现方式 3. (多通道、阻塞式)配置及实现方式 4. (多通道、DMA)配置及实现方式        STM32 的ADC精度为 12 位,且每个 ADC 最多有 16 个外部通道。各通道的A/D转换可以单次、连续、扫描或

    2024年02月10日
    浏览(28)
  • STM32-ADC电压采样实验(寄存器版)

    STM32F10X系列支持三路ADC,其ADC通道及对应IO口如下表所示: 其能接受的电压输入范围一般为0-3.3V(V REF- ≤ V IN ≤ V REF+ ),因此,如果需要测量超出0-3.3v量程范围的电压数据,需要在外围硬件增加分压电阻,将电路转换到0-3.3V量程范围内再进行采集。 这里用于做ADC采集的引脚使

    2024年02月15日
    浏览(40)
  • 【STM32】HAL库ADC测量精度提高方案(利用内部参考电压VREFINT计算VDDA来提高精度)

    【STM32】HAL库ADC测量精度提高方案(利用内部参考电压VREFINT计算VDDA来提高精度) 多数STM32的MCU 都没有内部基准电压 如L496系列 但在外接VDDA时(一般与VCC 3.3V连接) 有可能VCC不稳定 导致参考电压不确定 从而使ADC测量不准确 STM32内置一个测量VREFINT的ADC通道 且在寄存器VREFINT_

    2024年01月17日
    浏览(27)
  • STM32+HAL库使用ADC轮询模式采集音频信号

    ADC模块:咪头声音采集模块 缺点:占用CPU的使用率         软件开始ADC转换后,一直等到转换完成后,才向后执行,这个代码在初始化ADC之后执行一次校准(不执行这一步也可以,但精度可能会低一些);然后就可以使用ADC轮询转换了,只需要三步: 启动转换 、 等待转

    2024年02月15日
    浏览(32)
  • STM32CubeMX配置STM32G031多通道ADC采集(HAL库开发)

    时钟配置HSI主频配置64M  勾选打开8个通道的ADC  使能连续转换模式  配置好串口,选择异步模式 配置好需要的开发环境并获取代码  修改main.c 串口重定向  串口重定向一定要勾选Use Micro LIB  获取ADC通道值 主函数   串口输出

    2024年02月15日
    浏览(39)
  • STM32 TIMER_TRGO触发+ADC采集 + DMA传输 + 中断均方根处理 实现三相电压显示

    STM32 TIMER_TRGO触发+ADC采集 + DMA传输 实现三相电压采集 首先,是实际采集的三相电压值,用excel处理了下: 采集个电压,为什么这么复杂。 开始我也是直接用ADC采集,然后delay,再采集,然后delay,再采集……最后数据处理…… 问题是如果我们用单片机裸跑,每次delay都会卡死

    2024年02月16日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包