1. 项目概述:STM32F1内部温度传感器实验
这个实验的核心在于利用STM32F103芯片内置的温度传感器进行环境温度监测。不同于外接传感器方案,内部温度传感器直接集成在芯片内部,通过ADC通道16读取电压值后换算为温度值。我在实际项目中多次使用这个功能进行芯片温度监控,发现其精度虽然不如专业传感器,但对于系统过热预警等场景完全够用。
普中开发板作为国内广泛使用的STM32学习平台,其标准库开发方式能帮助初学者深入理解底层寄存器操作。本次实验将完整展示从ADC配置到温度换算的全过程,特别适合刚接触STM32硬件特性的开发者。需要说明的是,内部温度传感器更适合监测芯片结温而非环境温度,这是很多初学者容易混淆的概念。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件原理与核心配置
2.1 内部温度传感器工作原理
STM32F1系列内置的温度传感器实质是一个输出电压随温度变化的PN结,其线性度经过出厂校准。传感器连接至ADC1的通道16,测量范围理论上覆盖-40~125℃,但实测中发现常温段(0~70℃)精度最佳。关键参数如下:
| 参数 | 典型值 | 说明 |
|---|---|---|
| 测量范围 | -40~125℃ | 超出范围时线性度下降 |
| 精度 | ±1.5℃ | 25℃时的典型值 |
| 电压灵敏度 | 2.5mV/℃ | 温度每升高1℃电压降低2.5mV |
| V25电压 | 1.43V | 25℃时的基准电压 |
注意:实际使用前必须进行ADC校准!我曾遇到过未校准导致10℃偏差的案例,校准后误差可控制在±2℃内。
2.2 标准库关键配置步骤
使用标准库需要依次完成以下配置(以普中开发板为例):
- ADC初始化:
c复制ADC_InitTypeDef ADC_InitStructure;
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; // 独立
