普中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);
}
}
共赏
代码
参考
文章来源:https://blog.csdn.net/halo_hsuh/article/details/135364508
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!