STM32CubeIDE | 使用HAL库的ADC读取内部传感器温度

devtools/2024/9/25 13:07:55/

1、cubemx配置

1.1、系统配置

1.2、GPIO配置

PB2设置为“GPIO_Output”

user label设置为“LED”

1.3、串口配置

模式选择为“Asynchronous”,其他默认

1.4、时钟树配置

全部保持默认

2、ADC配置

通道选择“Temperature Sensor Channel”,其他默认

3、程序

3.1、头文件

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
#include <string.h>
#include <stdio.h>
#include <math.h>
/* USER CODE END 0 */

3.2、变量定义

  /* USER CODE BEGIN 1 */uint8_t tx_data[100];uint32_t ADC_Value;float ADC_Voltage,ADC_Temperature;/* USER CODE END 1 */

3.3、ADC采集

  /* Infinite loop *//* USER CODE BEGIN WHILE */while (1){HAL_ADC_Start(&hadc1);HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);if(HAL_ADC_PollForConversion(&hadc1, 20)==HAL_OK){ADC_Value=HAL_ADC_GetValue(&hadc1);
//		  ADC_Voltage=ADC_Value*3.3/4096;
//		  ADC_Temperature = ( ADC_Voltage - 0.76)/0.0025 + 25;//mvADC_Voltage=ADC_Value*3300/4096;ADC_Temperature = ( ADC_Voltage - 760)/2.5 + 25;sprintf((char *)tx_data,"采样值=%d,电压值=%fmV,温度值=%f℃",(int)ADC_Value,ADC_Voltage,ADC_Temperature);HAL_UART_Transmit(&huart1, tx_data, sizeof(tx_data), 1000);}HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);HAL_ADC_Stop(&hadc1);HAL_Delay(1500);/* USER CODE END WHILE */

 4、实验结果

5、bug处理记录

5.1、串口输出中文乱码

IDE在sprintf出提示

The float formatting support is not enabled, check your MCU Settings from "Project Properties > C/C++ Build > Settings > Tool Settings", or add manually "-u _printf_float" in linker flags.

 解决方法

菜单栏:Project→Properties

5.2、温度采集偏差太大

解决方法

采用更稳定的电源供电

jlink供电时VREF+引脚的测量结果

usb供电时VREF+引脚的测量结果

参考

【【小蜜蜂笔记】基于STM32CubeMX的嵌入式开发基础教程】 https://www.bilibili.com/video/BV1m7411H7oT/?p=8&share_source=copy_web&vd_source=f42320918d590ee8bddbeea3951af1af

HAL STM32F4内部温度读取+ADC阻塞式读取_hal 407 内部温度-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_42880082/article/details/137615388STM32CubeMX | HAL库的ADC多通道数据采集(轮训、DMA、DMA+TIM)、读取内部传感器温度_tim+adc+dma采集-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/qq153471503/article/details/108123019STM32F407内部温度偏差太大 (stmicroelectronics.cn)icon-default.png?t=O83Ahttps://shequ.stmicroelectronics.cn/forum.php?mod=viewthread&tid=605494&&extra=


http://www.ppmy.cn/devtools/116975.html

相关文章

Python Web 与物联网(IoT)集成与实时数据处理

Python Web 与物联网&#xff08;IoT&#xff09;集成与实时数据处理 目录 &#x1f310; IoT 与 Python 的集成&#x1f4e1; 使用 Flask/FastAPI 构建 IoT 中的 Web 接口与控制面板&#x1f517; 使用 MQTT 协议与 Paho 库进行设备间通信&#x1f5c4;️ 在 Python 中处理传…

【html】基础(二)

本专栏内容为&#xff1a;前端专栏 记录学习前端&#xff0c;分为若干个子专栏&#xff0c;html js css vue等 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;js专栏 &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &am…

【学习笔记】Transformer架构探讨

Transformer 是一种彻底改变人工智能方法的神经网络架构。它首次在 2017 年的里程碑式论文 "Attention is All You Need"[1] 中被提出&#xff0c;并迅速成为深度学习模型的首选架构&#xff0c;为 OpenAI 的 GPT、Meta 的 Llama 和 Google 的 Gemini 等文本生成模型…

js中正则表达式中【exec】用法深度解读

exec() 是 JavaScript 正则表达式对象&#xff08;RegExp&#xff09;中的一个方法&#xff0c;用于匹配字符串中的特定模式&#xff0c;并返回匹配结果。它比 test() 和 match() 更强大&#xff0c;因为它不仅仅返回匹配成功与否&#xff0c;还返回匹配的具体内容及其相关信息…

Mysql高级篇(中)—— SQL优化之查询截取分析

SQL优化之查询截取分析 一、慢查询日志&#xff08;1&#xff09;简述&#xff08;2&#xff09;如何开启&#xff08;3&#xff09;慢查询日志分析工具介绍(了解)&#xff08;4&#xff09;官方工具 mysqldumpslow简述如何使用 二、SHOW PROCESSLIST三、&#xff08;了解&…

PostgreSQL 模式

PostgreSQL 模式 介绍 PostgreSQL 是一种功能强大的开源对象关系数据库管理系统&#xff08;ORDBMS&#xff09;&#xff0c;它以其可靠性、健壮性和支持高级功能而闻名。在 PostgreSQL 中&#xff0c;模式&#xff08;schema&#xff09;是一个重要的概念&#xff0c;它用于…

外网SpringBoot项目迁移到内网无法加载maven依赖

外网SpringBoot项目迁移到内网无法加载maven依赖 **问题&#xff1a;**把外网项目拷贝到内网&#xff0c;并且把仓库下载好的依赖包放到内网&#xff0c;内网打开项目后全部飘红。 **原因&#xff1a;**拷贝过来的仓库依赖中含有_remote.repositories文件&#xff0c;加载时默…

分布式变电站电力监控系统

变电站电力监控系统能提供必要的实时运行信息&#xff0c;尤其是开关和保护行为的信息&#xff08;事故报警信息&#xff09;&#xff0c;使值班人员和系统调度人员把握安全控制、事故处理的主动性&#xff0c;同时可以提高电网的运行管理水平&#xff0c;减少变电、配电损失&a…