STM32·

STM32篇——单片机内部温度传感器

ronger

ronger

8037 0

1. 前期准备

安装好STM32CubeMX

安装好Clion

2. 创建项目

STM32单片机内部集成了一个温度传感器,可以用来实时检测CPU温度。测量温度范围为:-40~125度,温度传感器和ADC的第16通道直接相连。因此,只需要通过ADC便可采集温度值,ADC配置如下:

如上图所示,1启动ADC12使能温度采集通道。3处的Clock Configruation设置ADC时钟为12MHz

3. 编辑代码

项目自动创建了ADC对象hadc1以及初始化代码如下:

//ADC对象
ADC_HandleTypeDef hadc1;
//系统生成初始化代码
/**
  * @brief ADC1 Initialization Function
  * @param None
  * @retval None
  */
static void MX_ADC1_Init(void)
{
  ADC_ChannelConfTypeDef sConfig = {0};

  hadc1.Instance = ADC1;
  hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
  hadc1.Init.ContinuousConvMode = DISABLE;
  hadc1.Init.DiscontinuousConvMode = DISABLE;
  hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  hadc1.Init.NbrOfConversion = 1;
  if (HAL_ADC_Init(&hadc1) != HAL_OK)
  {
    Error_Handler();
  }
  sConfig.Channel = ADC_CHANNEL_TEMPSENSOR;
  sConfig.Rank = ADC_REGULAR_RANK_1;
  sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  {
    Error_Handler();
  }
}

main.c中编写温度采集函数如下:

/**
  * @brief 读取内部温度传感器
  */
void Get_Temp(void)
{
    uint32_t Temp;//温度采样分层值
    float Vsense = 0.0;//温度采样电压值
    float Temperature = 0.0;//温度值
    //数据手册温度转换公式:T = ((V25-Vsense)/Avg_Slope) + 25
    float V25 = 1.43;//查阅手册获得
    float Avg_Slope = 0.0043;//4.3mV/摄氏度
    printf("\r\n\r\n------------------MCU内部温度传感器测试------------------\r\n\r\n");
    //step1 启动ADC
    HAL_ADC_Start(&hadc1);
    //step2 温度采集转换
    HAL_ADC_PollForConversion(&hadc1,5);
    //step3 转换计算
    Temp = HAL_ADC_GetValue(&hadc1);//获取采样值分层值
    Vsense = Temp *(3.3/4096);//采样精度12bit,最大分层值4096
    Temperature = ((V25-Vsense)/Avg_Slope) + 25;//按公式计算温度值
    //step4 串口打印

    printf("温度分层值:%d\r\n温度电压值:%0.3f\r\n温度采样值:%0.3f\r\n",Temp,Vsense,Temperature);

    HAL_Delay(1000);
}

main()函数while(1)循环中调用如下:

while (1)
 {
    //采集温度
    Get_Temp();
 }

4. 编译下载

将程序编译下载至开发板,并将开发板连接至PC,打开串口调试助手RYCOM,并设置为:115200+8+N+1,接收结果如下。

5. 小结

本章学习了MCU内部温度传感器的使用。

所属系列

从当前文章继续阅读它所在合集中的前后内容。

关于我和 Hugh 学嵌入式开发这件事 —— STM32 篇 第 13 / 17 篇
查看合集

> 本作品集内教程基于 [Hugh](https://rymcu.com/user/hugh) 的创作基础上进行修订发布 关于我和 Hugh 学嵌入式开发这件事

相关文章

优先推荐同专题、同标签和同作者内容,补足热门文章。

评论 0

登录 后参与评论

评论

成为第一个评论的人