3 内部温湿度传感器功能函数

1.STM32内部温度传感器介绍:
2.内部温度传感器配置步骤: ADC相关库函数在.c和.h文件中; 初始化相关参数,开启内部温度传感器:tCmd();读取 AD值,将其转换为对应温度; 3.内部温度传感器实验: 功能实现:通过芯片内部温度传感器读取温度,将读取的温度数据通过串口打印出来,LED0指示灯闪烁提示系统正常运行 。(1)主函数:
#include "delay.h"#include "led.h"#include "usart1.h"#include "inner_temp.h"int main(){u8 i=0;int temp=0;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置分组delay_init();//延时初始化LED_Init();usart1_Init(9600);//串口通信初始化ADC_TEMP_Init();//内部温度传感器初始化while(1){i++;if(i%20==0){LED0=!LED0;}delay_ms(10);if(i0==0)//1s{temp=Get_Temperture();//读取温度if(temp>=0)//温度为正{ printf("内部温度传感器检测值:+");}else if(temp<0)//温度为负{printf("内部温度传感器检测值:-");}printf("%.2f ℃\r\n",(float)temp/100);//温度的值printf("\r\n");}}}
(2)头文件:
#ifndef __INNER_TEMP_H#define __INNER_TEMP_Htypedef unsigned char u8;typedef unsigned short u16;typedef unsigned int u32;void ADC_TEMP_Init(void);//初始化内部温度传感器 u16 Get_ADC_Temp_Value(u8 ch,u8 times);//读取ADC的电压值int Get_Temperture(void);//读取温度#endif
(3)内部温湿度传感器功能函数:
【3内部温湿度传感器功能函数】#include"stm32f10x.h"#include"delay.h"#include"inner_temp.h"/*功能:内部温度传感器初始化变量:无返回值:无*/void ADC_TEMP_Init(void){ADC_InitTypeDef ADC_InitStruct;//1.使能ADC时钟;RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);//2.设置ADC的分频因子RCC_ADCCLKConfig(RCC_PCLK2_Div6);//3.开启内部温度传感器ADC_TempSensorVrefintCmd(ENABLE);//4.初始化ADC参数ADC_InitStruct.ADC_ContinuousConvMode=DISABLE;//不连续转换ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;//对齐方式->右对齐ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//不使用外部触发,使用软件触发ADC_InitStruct.ADC_Mode=ADC_Mode_Independent;//独立模式ADC_InitStruct.ADC_NbrOfChannel=1;//通道数量->1ADC_InitStruct.ADC_ScanConvMode=DISABLE;//不扫描ADC_Init(ADC1,&ADC_InitStruct);//5.使能ADC校准ADC_Cmd(ADC1,ENABLE);//使能ADC1ADC_ResetCalibration(ADC1);//开启复位校准while(ADC_GetResetCalibrationStatus(ADC1));//判断复位校准是否完成,完成则结束循环ADC_StartCalibration(ADC1);//开启校准while(ADC_GetCalibrationStatus(ADC1));//判断开启校准是否完成,完成则结束循环//6.开启软件触发ADC_SoftwareStartConvCmd(ADC1,ENABLE);}/*功能:读取ADC的电压值变量:ch:通道times:采集次数*/u16 Get_ADC_Temp_Value(u8 ch,u8 times){u8 i=0;u16 temp_val=0;//设置ADC规则通道ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_239Cycles5);//ADC选择、通道、通道数量、采样周期//读取ADC的值for(i=0;i
(4)实验结果: