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 开发指南(库函数版)
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步