STM32CubeMX+ADC数据采集

设计对电池电压进行检测的应用程序

STM32理解:https://blog.csdn.net/u010893262/article/details/68942710

一、ADC(Analog-to-Digital Converter)模数转换器

模拟信号----->数字信号

                               

 

二、ADC外设的工作参数配置

 

二、ADC外设的工作参数配置

 

三、配置USART外设的工作参数

 

 

 四、生成代码

在main.c文件中设置所需变量

/* USER CODE BEGIN PV */
// ADC转换值存放
uint16_t adc_value = 0;    
// 电压值
float voltage = 0.0;
// 电压值结果显示
char voltString[50] = {0};
/* USER CODE END PV */

在while循环里

复制代码
while (1)
  {
        // 启动ADC转换
        HAL_ADC_Start(&hadc1);
        // 等待转换完成,第二个参数表示超时时间,单位ms
        HAL_ADC_PollForConversion(&hadc1, 100);
        // 为换取ADC状态
        adc_value = HAL_ADC_GetValue(&hadc1);
        // 采取的右对齐除以2的12次方,参考电压为3.3V
        voltage = (float)adc_value / 4096 * 3.3;
        sprintf(voltString, "²É¼¯µ½µÄµçѹֵΪ: %.2f V", voltage);
        printf("%s\r\n", voltString);
        HAL_Delay(1000);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
复制代码

 在USART.c添加

#include "usart.h"

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

 在USART.h添加

#include "main.h"
#include <stdio.h>

 

posted @   DingJie1024  阅读(9259)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示