stm32H7B0VBT6 CPU温度
时间: 2025-01-22 10:52:23 浏览: 47
### STM32H7B0VBT6 CPU 温度测量方法
STM32H7系列微控制器内置了温度传感器,可以用来监测内部温度。对于STM32H7B0VBT6而言,温度传感器的数据可以通过ADC通道获取。
#### 配置 ADC 测量温度
为了读取CPU温度,需先初始化ADC模块并将温度传感器连接到指定的ADC通道。通常情况下,温度传感器会映射到特定的ADC输入通道,在STM32H7中通常是ADC_CHANNEL_TEMPSENSOR[^1]。
```c
// 初始化ADC并启动转换
static void MX_ADC_Init(void)
{
ADC_ChannelConfTypeDef sConfig = {0};
hadc.Instance = ADCx; // 替换为实际使用的ADC实例
// 配置ADC参数...
// 配置温度传感器对应的通道
sConfig.Channel = ADC_CHANNEL_TEMPSENSOR;
sConfig.Rank = 1;
sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
HAL_ADC_ConfigChannel(&hadc, &sConfig);
}
```
#### 获取温度值
完成上述配置之后,就可以通过调用HAL库中的API来执行一次性的温度采样:
```c
float get_cpu_temperature(void){
int32_t raw_value;
float voltage_millivolts;
float temp_celsius;
/* 启动单次转换 */
HAL_ADC_Start(&hadc);
HAL_ADC_PollForConversion(&hadc, HAL_MAX_DELAY);
raw_value = HAL_ADC_GetValue(&hadc);
/* 将原始AD值转化为电压(mV) */
voltage_millivolts = (raw_value * VDDA_APPLI_MILLIVOLTS) / MAX_ADC_VALUE;
/* 计算摄氏度 */
temp_celsius = ((voltage_millivolts - TEMP_SENSOR_V25_CALIBRATION_MILLIVOLTS) /
TEMP_SENSOR_AVG_SLOPE_MILLIVOLTS_PER_DEGREE_CELSIUS) + 25.0F;
return temp_celsius;
}
```
这里假设已知电源电压`VDDA_APPLI_MILLIVOLTS`, 根据具体硬件设置调整此变量;同样地,`MAX_ADC_VALUE`应根据所选MCU的最大ADC分辨率设定(如4095对应于12位精度).
#### 正常工作范围
按照产品规格书描述,STM32H7B0VBT6的工作环境温度范围是从-40°C至+85°C不等。然而,当设备处于极限条件下长时间运作可能会缩短其寿命或影响稳定性。因此建议保持在更窄的安全区间内(-20°C~70°C),以确保最佳性能和可靠性[^3].
阅读全文
相关推荐


















