四、代码 4.1、adc.c函数void MX_ADC3_Init(void)下添加如下用户代码。
最后,在adc.c文件最底部编写函数float get_CPU_Temperature(uint32_t Timeout)。
float get_CPU_Temperature(uint32_t Timeout) {
uint16_t TS_CAL1; uint16_t TS_CAL2;
HAL_ADC_Start(&hadc3); /* 启动ADC3的转换 */
if(HAL_OK == HAL_ADC_PollForConversion(&hadc3,Timeout)) /* 等待ADC3的转换,超时时间Timeout */ { Temp_DC = HAL_ADC_GetValue(&hadc3); } else { printf("ADC Conversion failed! \n"); }
/* 根据参考手册给的公式计算温度值 */ TS_CAL1 = *(__IO uint16_t *)(0x1FF1E820); TS_CAL2 = *(__IO uint16_t *)(0x1FF1E840);
Temp_oC = ((110.0f - 30.0f) / (TS_CAL2 - TS_CAL1)) * (Temp_DC - TS_CAL1) + 30.0f;
return Temp_oC; }
|