0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

嵌入式单片机MCU开发 来源:嵌入式单片机MCU开发 作者:嵌入式单片机MCU开 2022-11-14 16:34 次阅读

概述

本章通过使用模数转换器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);//启动ADC
  HAL_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("
adc%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,输出如下。

在这里插入图片描述

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • adc
    adc
    +关注

    关注

    98

    文章

    6489

    浏览量

    544421
  • USART
    +关注

    关注

    1

    文章

    195

    浏览量

    30834
  • stm32cubemx
    +关注

    关注

    5

    文章

    283

    浏览量

    14788
收藏 人收藏

    评论

    相关推荐

    STM32CUBEMX(9)--ADC通过轮询方式读取USART打印

    概述 本章通过使用模数转换器(ADC),通过轮询方式采集多个ADC通道电压。 之前已经做过DMA
    发表于 09-10 15:31

    转:使用STM32CubeMX生成用于STM32-V5开发板的USART工程中断方式

    本期教程使用STM32CubeMX生成可用于STM32-V5开发板的USART1中断方式的工程,通过本期教程让大家对
    发表于 09-09 11:27

    STM32CUBEME--ADC通过轮询方式读取

    STM32CUBEME--ADC通过轮询方式读取USART
    发表于 08-10 07:58

    STM32CubeMX软件工程描述_ USART配置过程

    STM32CubeMX软件工程描述_USART配置过程
    的头像 发表于 03-25 10:43 3350次阅读
    <b class='flag-5'>STM32CubeMX</b>软件工程描述_ <b class='flag-5'>USART</b>配置过程

    STM32单片机基础21——使用ADC读取电压值

    title: 【STM32Cube-21】使用ADC读取电压值tags: STM32CubeMX ADCcategories: STM32C
    发表于 11-19 09:51 35次下载
    <b class='flag-5'>STM32</b>单片机基础21——使用<b class='flag-5'>ADC</b><b class='flag-5'>读取</b>电压值

    STM32CUBEMX(3)--ADC通过DMA方式采样,USART打印

    STM32CUBEME--3ADC通过DMA方式采样,USART打印概述硬件准备选择芯片型号配置时钟源配置时钟树串口配置
    发表于 12-01 14:51 7次下载
    <b class='flag-5'>STM32CUBEMX</b>(3)--<b class='flag-5'>ADC</b><b class='flag-5'>通过</b>DMA<b class='flag-5'>方式</b>采样,<b class='flag-5'>USART</b><b class='flag-5'>打印</b>

    STM32CUBEMX(10)--Flash读写

    STM32CUBEME--ADC通过轮询方式读取USART
    发表于 12-02 11:21 11次下载
    <b class='flag-5'>STM32CUBEMX</b>(10)--Flash读写

    STM32CUBEMX 工程添加 软件iic读取mpu6050

    USART串口 DMA发送,ADC采集,定时器中断中进行ADC采集和USART串口发送,mpu6050代码迁移适配从而在定时器中断中读取a
    发表于 12-06 12:06 6次下载
    <b class='flag-5'>STM32CUBEMX</b> 工程添加  软件iic<b class='flag-5'>读取</b>mpu6050

    STM32CubeMX完成USART串口通信

    STM32CubeMX完成USART串口通信
    发表于 12-06 20:36 24次下载
    <b class='flag-5'>STM32CubeMX</b>完成<b class='flag-5'>USART</b>串口通信

    STM32CubeMX实现串口通信(中断方式

    这里写目录标题一、STM32CubeMX工程创建1、题目要求2、配置STM32CubeMX工程一、STM32CubeMX工程创建1、题目要求完成一个STM32
    发表于 12-24 19:18 11次下载
    <b class='flag-5'>STM32CubeMX</b>实现串口通信(中断<b class='flag-5'>方式</b>)

    STM32CubeMX学习笔记——STM32H743_DAC

    main.c使用内置的ADC1 IN19 与 DAC1 Channel1进行回环测试(设置DAC值,在外部用杜邦线连接起来使用ADC读取值)采用STM32CubeMX 5.0.0 版本
    发表于 12-27 18:40 17次下载
    <b class='flag-5'>STM32CubeMX</b>学习笔记——<b class='flag-5'>STM32</b>H743_DAC

    STM32CubeMX与HAL库学习--ADCUSART的简单练习

    STM32CubeMX与HAL库学习--ADCUSART的简单练习前言STM32CubeMX生成初始化代码在MDK-ARM里编辑代码效果前言最近看了
    发表于 01-12 20:27 13次下载
    <b class='flag-5'>STM32CubeMX</b>与HAL库学习--<b class='flag-5'>ADC</b>与<b class='flag-5'>USART</b>的简单练习

    STM32CUBEMX(5)--自定义红外NEC解码,定时器TIM捕获方式

    本篇文章主要介绍如何使用STM32CubeMX对红外波形进行解码,并通过串口打印
    的头像 发表于 11-14 15:48 3463次阅读
    <b class='flag-5'>STM32CUBEMX</b>(5)--自定义红外NEC解码,定时器TIM捕获<b class='flag-5'>方式</b>

    STM32CUBEMX开发GD32F303(10)----双ADC轮询模式扫描多个通道

    。 本章主要配置,双ADC轮询模式扫描多个通道,通过串口进行打印。 查阅手册可以得知,PA9、PA10为串口0的输出和输入口。
    的头像 发表于 11-29 17:38 1822次阅读
    <b class='flag-5'>STM32CUBEMX</b>开发GD32F303(10)----双<b class='flag-5'>ADC</b><b class='flag-5'>轮询</b>模式扫描多个通道

    STM32CubeMx配置USART1增加打印功能

    STM32CubeMx配置USART1增加打印功能
    的头像 发表于 08-22 10:32 1212次阅读
    <b class='flag-5'>STM32CubeMx</b>配置<b class='flag-5'>USART</b>1增加<b class='flag-5'>打印</b>功能