前言
硬件的配置由前面的工程递增,会根据目的修改部分控制代码
过程,原理性的东西网上一大把,我就不赘述了,由于懒,主要由图片和代码加少量文字组成就是由于本人较懒,记录主要
源码地址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);//等待转换完成,超时时间10ms
adc_values[0]=HAL_ADC_GetValue(&hadc1);
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1,10);//等待转换完成,超时时间10ms
adc_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采集内部温度传感器和基准电压的配置和测试
浙公网安备 33010602011771号