stm32 内部温度传感器的配置

  STM32的内部温度传感器和ADCx—IN16输入通道相连接。且温度传感器推荐采样时间为17.1us,支持的温度范围为:-40~125度,精度比较差,± 5℃左右。

  计算温度值:T(℃) ={V25-Vsense/Avg_Slope}+25

  V25=Vsense 25 度时的数值(典型值为: 1.43)。

  Avg_Slope=温度与 Vsense 曲线的平均斜率(单位为 mv/℃或 uv/℃)(典型值为4.3Mv/℃)。 
  

 1 ADC_InitTypeDef ADC_InitStructure; 
 2     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1    , ENABLE );      //使能GPIOA,ADC1通道时钟
 3   
 4     RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //分频因子6时钟为72M/6=12MHz
 5 
 6     ADC_DeInit(ADC1);  //将外设 ADC1 的全部寄存器重设为缺省值
 7  
 8     ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;    //ADC工作模式:ADC1和ADC2工作在独立模式
 9     ADC_InitStructure.ADC_ScanConvMode = DISABLE;    //模数转换工作在单通道模式
10     ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;    //模数转换工作在单次转换模式
11     ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;    //转换由软件而不是外部触发启动
12     ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;    //ADC数据右对齐
13     ADC_InitStructure.ADC_NbrOfChannel = 1;    //顺序进行规则转换的ADC通道的数目
14     ADC_Init(ADC1, &ADC_InitStructure);    //根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器
15 
16     ADC_TempSensorVrefintCmd(ENABLE); //开启内部温度传感器
17     
18  
19     ADC_Cmd(ADC1, ENABLE);    //使能指定的ADC1
20 
21     ADC_ResetCalibration(ADC1);    //重置指定的ADC1的复位寄存器
22 
23     while(ADC_GetResetCalibrationStatus(ADC1));    //获取ADC1重置校准寄存器的状态,设置状态则等待
24 
25     ADC_StartCalibration(ADC1);     //AD校准
26 
27     while(ADC_GetCalibrationStatus(ADC1));        //获取指定ADC1的校准程序,设置状态则等待

 

知识来源:STM32F1 开发指南(库函数版)

原文地址:https://www.cnblogs.com/zengsf/p/7216398.html