当前位置: 首页 > article >正文

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

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;
		  //mv
		  ADC_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.kler.cn/a/318925.html

相关文章:

  • 微信小程序的主体文件和页面文件介绍
  • git入门环境搭建
  • HTTP常见的请求头有哪些?都有什么作用?在 Web 应用中使用这些请求头?
  • Vector Optimization – Stride
  • 设计模式之责任链模式(Chain Of Responsibility)
  • 利用阿里云下载 WebRTC 源码
  • 基于springboot垃圾分类网站
  • 这样做PPT也太酷了吧,27.9kstar,适合开发者的ppt工具推荐
  • Spring Boot 点餐系统:提升您的餐饮体验
  • Cannot solve model: no CPLEX runtime found.【macOS系统下问题解决】
  • c# 将调试信息到VS输出窗口
  • 飞驰云联FTP替代方案:安全高效文件传输的新选择
  • 机器学习_神经网络_深度学习
  • 如何在银河麒麟操作系统中关闭IPv6
  • 解决mac下 Android Studio gradle 下载很慢,如何手动配置
  • linux安装solr
  • 配网缺陷检测无人机航拍图像数据集(不规范绑扎,螺栓销钉缺失)数据集总共3000张左右,标注为voc格式
  • 【RabbitMQ】消息分发、事务
  • 二级C语言2023-3易错题
  • 【伺服】Servo入坑学习记录①
  • 02DSP学习-了解syscfg
  • C语言从头学63—学习头文件stdlib.h(二)
  • PyQt5 导入ui文件报错 AttributeError: type object ‘Qt‘ has no attribute
  • Spring Boot在心理辅导领域的创新应用
  • C++(9.24)
  • Golang | Leetcode Golang题解之第420题强密码检验器