第12章 STM32 ADC采集内部温度传感器和基准电压的配置和测试
文章目录
- 前言
- 一、STM32CUBE配置修改
- 二、代码和测试
- 总结
- 参考
前言
硬件的配置由前面的工程递增,会根据目的修改部分控制代码
由于本人较懒,记录主要是过程,原理性的东西网上一大把,我就不赘述了,由于懒,主要由图片和代码加少量文字组成
源码地址https://gitcode.com/qq_36517072/stm32,第x章为cx文件夹
一、STM32CUBE配置修改
配置ADC1,开启内部温度传感器和基准电压的采集
ctrls+generatecode
二、代码和测试
修改freertos.c
,在默认任务里对ADC采集并计算打印值
#include "adc.h"
/* USER CODE END Includes */
.../* USER CODE BEGIN StartDefaultTask */uint32_t adc_values[2];double temperate,voltage,volt_ref;//shell_init();//udp_client_init();/* Infinite loop */for(;;){HAL_GPIO_TogglePin(GPIOF,LED0_Pin);HAL_ADC_Start(&hadc1);HAL_ADC_PollForConversion(&hadc1,10);//等待转换完成,超时时间10msadc_values[0]=HAL_ADC_GetValue(&hadc1);HAL_ADC_Start(&hadc1);HAL_ADC_PollForConversion(&hadc1,10);//等待转换完成,超时时间10msadc_values[1]=HAL_ADC_GetValue(&hadc1);printf("adc_values:%x %x\r\n",adc_values[0],adc_values[1]);voltage=(float)adc_values[0]*(3.3/4096); //电压值volt_ref=(float)adc_values[1]*(3.3/4096);temperate=(voltage-0.76)/0.0025 + 25; //转换为温度值printf("voltage:%f temperate:%f volt_ref:%f\r\n",voltage,temperate,volt_ref);osDelay(1000);}/* USER CODE END StartDefaultTask */
编译烧录运行后串口每秒打印内部温度传感器和基准电压的值
总结
主要介绍了STM32 ADC采集内部温度传感器和基准电压的配置和测试
参考
https://blog.csdn.net/qq_46038320/article/details/134146833?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-134146833-blog-149654693.235v43pc_blog_bottom_relevance_base8&spm=1001.2101.3001.4242.1&utm_relevant_index=3