基于stm32f103cbt6这款芯片,原理部分请参考其他文章,此文章为快速上手得到结果,以结果为导向。
1.基础配置
打开stm32cubemx只需要勾选中 ADC1 Temperature Sensor Channel
2.代码分析
/*
* 函数名:float GetAdcAnlogValue(void)
* 输入参数:无
* 输出参数:无
* 返回值:返回一个float型值,即采样到的模拟电压值
* 函数作用:获取ADC的采样到的内部温度
*
* 备注:此处参考电压为3.3V
*/
float GetTemptureValue(void)
{
uint16_t nData = 0;
float nValue = 0.0;
/*连续模式*/
// HAL_ADC_Start(&hadc1); // 启动ADC1
// HAL_ADC_PollForConversion(&hadc1, 250); // 等待ADC转换结束
/* 关闭 */
nData = HAL_ADC_GetValue(&hadc1); // 得到转换数据
nValue = (1.43 - nData*3.3/4096)*(1000/4.3) + 25; /* 计算公式 */
// 返回计算得到的模拟电压值
return nValue;
}