STM32CUBEMX--ADC通过轮询方式读取,USART打印

  • 概述
  • 硬件准备
  • 选择芯片型号
  • 配置时钟源
  • 配置时钟树
  • 串口配置
  • ADC配置
  • 生成工程设置
  • 生成代码
  • 配置keil
  • 代码
  • 演示效果
  • 视频讲解
  • 最后

概述

本章通过使用模数转换器(ADC),通过轮询方式采集多个ADC通道电压。
之前已经做过DMA方式采样,详情请查看:
https://blog.csdn.net/qq_24312945/article/details/106557538

硬件准备

首先需要准备一个开发板,这里我准备的是NUCLEO-F030R8的开发板:

选择芯片型号

使用STM32CUBEMX选择芯片stm32f030r8,如下所示:

配置时钟源

HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择Disable选项,如下所示:

配置时钟树

STM32F0的最高主频到48M,所以配置48即可:

串口配置

本次实验使用的串口1进行串口通信,波特率配置为115200。

ADC配置

STM32f030中,有一个ADC(模拟/数字转换器),每个 ADC 有 12 位、 10 位、 8 位和 6 位可选,每个ADC有16个外部通道、2个内部通道和一个VBAT 通道的信号。
本文将开ADC的IN0、IN1、IN15一共三个通道,来分别读取ADC,由于串口2和IN2,IN3复用,故不使用IN2、IN3。配置如下:

生成工程设置

注意在生产工程设置中不能出现中文,不然会报错。

生成代码

配置keil

代码

在main.c中,添加头文件,若不添加会出现 identifier “FILE” is undefined报错。

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

函数声明和串口重定向:

/* USER CODE BEGIN PTD */
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */PUTCHAR_PROTOTYPE
{HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);return ch;
}
/* USER CODE END PTD */

变量定义:

/* USER CODE BEGIN 0 */
uint8_t i;
uint16_t adcBuf[3];//存放ADC
/* USER CODE END 0 */

主循环:

   /* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */i=0; while(i<3){HAL_ADC_Start(&hadc);//启动ADCHAL_ADC_PollForConversion(&hadc,0xffff);//表示等待转换完成,第二个参数表示超时时间,单位ms.//HAL_ADC_GetState(&hadc1)为换取ADC状态,HAL_ADC_STATE_REG_EOC表示转换完成标志位,转换数据可用。if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc),HAL_ADC_STATE_REG_EOC))//就是判断转换完成标志位是否设置,HAL_ADC_STATE_REG_EOC表示转换完成标志位,转换数据可用{//读取ADC转换数据,数据为12位。查看数据手册可知,寄存器为16位存储转换数据,数据右对齐,则转换的数据范围为0~2^12-1,即0~4095.adcBuf[i]=HAL_ADC_GetValue(&hadc);printf("\nadc%d=%4.0d,电压=%1.4f",i,adcBuf[i],adcBuf[i]*3.3f/4096);i++;}}HAL_ADC_Stop(&hadc);HAL_Delay(500);       }/* USER CODE END 3 */

演示效果

设定adc0口接3.3V,adc1口接GND,adc15口接1.5V,输出如下。

视频讲解

https://www.bilibili.com/video/BV1oD4y1Q71y

最后

关注微信公众号『记贴』,持续更新文章和学习资料,可加作者的微信交流学习!

STM32CUBEMX(9)--ADC通过轮询方式读取,USART打印相关推荐

  1. 使用轮询方式进行ADC转换(野火STM32 MINI开发板)

    实验器材:野火STM32 MINI开发板 任务目标:利用ADC采集电位器的电压,并通过串口调试助手输出变化的电压值 任务内容:调整开发板上的滑动变阻器,将电压值通过开发板到PC进行显示 开发板原理图: ...

  2. STM32F1与STM32CubeIDE快速入门-ADC轮询方式实现PWM调光器

    ADC轮询方式实现PWM调光器 在模拟输入通道上使用 ADC 执行模数转换的最简单的代码方法. 然而,这并不是所有情况下的有效方式,因为它被认为是使用 ADC 的一种阻塞方式. 通过这种方式,我们开始 ...

  3. 选中断还是轮询方式?深究其中的区别

    作者 | 肖遥 来源 | 技术让梦想更伟大 摸水了一周,准备在家里好好敲敲代码,赶赶稿子,正当我专心输出的时候,被老婆打断了. 娃拉臭了,赶紧过来!语气中带着一丝丝我害怕的味道. 怎么办?没办法只有过 ...

  4. DW1000开发笔记(五)DW1000使用轮询方式接收数据

    系列文章 DW1000开发笔记(一)DW1000芯片概览 DW1000开发笔记(二)使用STM32硬件SPI+STM32cubeMX+HAL库测试DW1000通信 DW1000开发笔记(三)基于STM ...

  5. Tiny4412裸机程序,按键检测(轮询方式)

    由于前几天出差,博客没有更新,今天看了看Tiny4412的原理图,把按键扫描程序写了一下,用的是轮询方式,后面会有中断方式的实现,闲话少说,进入正题,程序由前一个实验Tiny4412之C语言实现流水灯 ...

  6. modbus tcp主站和从站_【智】S7200PLC与台达变频器MODBUS轮询实时读取详解

    大家好,我是微控小智,今天又跟大家见面了.学习不是一蹴而就,需要坚持,做技术亦是如此,厚积才能博发. 上次分享的S7-200PLC与台达VFD_M变频器Modbus通讯案例程序,是采用SM0.5时钟脉 ...

  7. oracle轮询方式循环输出,LGWR的两种模式(POST/WAIT和POLLING)

    11.2之前,oracle的lgwr写入模式为post/wait 11.2之后新增了polling模式,可以与post/wait模式自动切换 通过隐藏参数 _use_adaptive_log_file ...

  8. RTX5 | 内存池03 - 共享内存用于线程之间的通讯(轮询方式)

    文章目录 一.前言 怎样防止内存溢出? 二.实验目的 三.代码 3.1.main.h 3.2.main.c 四.Debug 4.1.Debug (printf) Viewer 4.2.修改一下程序:线 ...

  9. STM32单片机硬件I2C驱动程序(软件轮询方式)---摘自:FeoTech

    感谢原作者:FeoTech   原文网址:http://feotech.com/?p=69 本程序主要用于驱动STM32单片机芯片的硬件I2C寄存器,实现通过使用芯片自带的I2C寄存器进行数据的发送与 ...

最新文章

  1. 插入空行_如何一键插入表格空行,这个方法才最高级!
  2. BZOJ——2134: 单选错位
  3. C++ explicit关键字
  4. python获取当前线程_Python爬虫(线程,进程)
  5. C语言sql参数化查询,使用LIKE的sql参数化查询
  6. 一种基于annotation的Spring-mvc权限控制方法
  7. java——base64 加密和解密
  8. Python:命令安装pyQt5相关插件
  9. c语言全局变量6,C语言全局变量定义方法
  10. 让工程师拥有一台“超级”计算机——字节跳动客户端编译加速方案
  11. bilibili怎么用用户名登录_b站账号(bilibili免费账号密码)
  12. php pcntl_alarm,pcntl_alarm定时闹钟信号详解
  13. SuperMap iDesktop 9D 制作专题地图
  14. 批量合并word文档
  15. mtd-utils交叉编译
  16. 陈艾盐:《春燕》百集访谈节目第五十九集
  17. 云存储和网盘有何区别
  18. php中美元符号是什么意思,js程序中美元符号$是什么
  19. 20140228老沙的感觉
  20. (转载)使用Android Studio对代码进行重构

热门文章

  1. iOS- JSPatch 热更新
  2. 最新的阿里内部Java性能调优实战笔记,学完就能用的性能调优方法
  3. pytorch实现 minist 手写体分类任务
  4. 专转本计算机模拟试卷,江苏专转本计算机模拟试卷
  5. 思科模拟器:通过一台三层交换机及两台二层交换机和6台电脑划分3个VLAN,并建立三个网关让电脑之间互通
  6. LTP和stream性能测试工具
  7. 网站统计中的数据收集原理及实现-埋点统计
  8. Android Canvas Layers
  9. 微信小程序跳一跳辅助之路(ios直接改分版)
  10. 泛微签约广东特地陶瓷有限公司