普中STM32-PZ6806L开发板(HAL库函数实现-读取内部温度)

2024-01-03 17:35:47

简介

主芯片STM32F103ZET6,读取内部温度

其他知识

内部温度所在ADC通道

在这里插入图片描述

温度计算公式

在这里插入图片描述
V25跟Avg_Slope值 参考文档 stm32f103ze.pdf
在这里插入图片描述

电压计算公式

Vout = Vref * (D / 2^n) 其中Vref代表参考电压, n为ADC的位数, D为ADC输入的数字信号。

实现步骤

创建项目

参考 普中STM32-PZ6806L开发板(HAL库函数实现-USART1 printf+scanf/gets), 先创建一个可以串口打印的项目

获取内部温度前初始化

AD1 内部温度通道初始化, 连续转化模式打开
在这里插入图片描述
设置采样周期
在这里插入图片描述
时钟设定
在这里插入图片描述

添加用户代码

main.c

float temp_celsius_calculator(uint16_t value)
{
	// {(V25 - VSENSE) / Avg_Slope} + 25.
	float res = 0.0;
	float v25 = 1.43, avg_slope = 4.3/1000;
	float vref = 3.3;
	float vsense = vref * ((float)(value) / 4096.0);
	
	res = ((v25 - vsense) / avg_slope) + 25.0;
	
	return res;
}

int main()
{
uint16_t val = 0;
float celsius = 0;

HAL_ADC_Start(&hadc1);  // ADC开启
...

...

while(1)
{
	HAL_ADC_PollForConversion(&hadc1, 0xffff);// 触发转化
    val = HAL_ADC_GetValue(&hadc1); // 读取转化值
    celsius = temp_celsius_calculator(val); 
		
	printf("read_value: %d, %0.2f ℃\r\n", val, celsius); // 打印到串口
	HAL_Delay(2000);
}
}

共赏

在这里插入图片描述

代码

不需要下载, 基本代码上面都提供了

参考

普中STM32-PZ6806L开发板(HAL库函数实现-批量操作GPIO引脚实现跑马灯)

文章来源:https://blog.csdn.net/halo_hsuh/article/details/135364508
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。