1、AD使用之STM32 内部温度检测使用

芯片:STM32F103C8

1、CubeMX中设置


2、自动生成代码后,打开main.c

    1、添加全局变量

            uint16_t AD_Value = 0;

    2、在while(1)中添加如下代码

    HAL_ADC_Start(&hadc1);  //启动ADC装换

      HAL_ADC_PollForConversion(&hadc1, 50); //表示等待转换完成,第二个参数表示超时时间,单位ms.
      /* Check if the continous conversion of regular channel is finished */ 

      if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC))

//就是判断转换完成标志位是否设置,HAL_ADC_STATE_REG_EOC表示转换完成标志位,转换数据可用

      {

          /*##-3- Get the converted value of regular channel  ######################*/

          AD_Value = HAL_ADC_GetValue(&hadc1);                          //读取ADC转换数据,数据为12位。

//根据公式转换温度,1400可自行设置,调整误差。AD_Value*3300/4096为将转换后的数据转化为电压,单位为mV,参考电压为3.3V

          printf("MCU Temperature : %.1f度\r\n",((AD_Value*3300/4096-1400)/2.5+25));   

      }

      HAL_Delay(1000);


测试结果:精度是不高,但了胜于无。



版权声明:本文为hpy518原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。