STM32 内部温度传感器

STM32——内部温度传感器实验 阅读详情

简介
STM32有一个内部的温度传感器,可以用来测量CPU及周围的温度(TA)。
特点:

  1. 该温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值
  2. 温度传感器模拟输入推荐采样时间是17.1μs
  3. STM32的内部温度传感器支持的温度范围为:-40~125度。精度比较差,为±1.5℃左右
  4. 内部温度传感器更适合于检测温度的变化,而不是测量绝对温度。如果需要测量绝度温度,应该使用一个外部温度传感器,如DS18B20

使用注意事项:
第一个地方,我们要使用STM32的内部温度传感器,必须先激活ADC的内部通道,这里通过ADC_CR2的TSVREFE位(bit23)设置。设置该位为1则启用内部温度传感器。
等价于库函数:

ADC_TempSensorVrefintCmd(ENABLE); //开启内部温度传感器

温度计算公式:

T(℃)={(V25-Vsense)/Avg_Slope}+25

V25=Vsense在25度时的数值(典型值为:1.43)。
Avg_Slope=温度与Vsense曲线的平均斜率(单位为mv/℃或uv/℃)(典型值为4.3Mv/℃)。
利用以上公式,我们就可以方便的计算出当前温度传感器的温度了

CODE

//tsensor.c
#include "tsensor.h"
#include "delay.h"
#include "sys.h"

//初始化ADC
//这里我们仅以规则通道为例
//我们默认将开启通道0~3 
void T_Adc_Init(void)  //ADC通道初始化
{
    ADC_InitTypeDef ADC_InitStructure; 
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1    , ENABLE );   //使能GPIOA,ADC1通道时钟
    RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //分频因子6时钟为72M/6=12MHz
    ADC_DeInit(ADC1);  //将外设 ADC1 的全部寄存器重设为缺省值
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;  //ADC工作模式:ADC1和ADC2工作在独立模式
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;   //模数转换工作在单通道模式
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //模数转换工作在单次转换模式
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //转换由软件而不是外部触发启动
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;  //ADC数据右对齐
    ADC_InitStructure.ADC_NbrOfChannel = 1; //顺序进行规则转换的ADC通道的数目
    ADC_Init(ADC1, &ADC_InitStructure); //根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器
    ADC_TempSensorVrefintCmd(ENABLE); //开启内部温度传感器
    ADC_Cmd(ADC1, ENABLE);  //使能指定的ADC1
    ADC_ResetCalibration(ADC1); //重置指定的ADC1的复位寄存器
    while(ADC_GetResetCalibrationStatus(ADC1)); //获取ADC1重置校准寄存器的状态,设置状态则等待
    ADC_StartCalibration(ADC1);
    while(ADC_GetCalibrationStatus(ADC1));      //获取指定ADC1的校准程序,设置状态则等待
}

u16 T_Get_Adc(u8 ch)
{
    ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );  //ADC1,ADC通道3,第一个转换,采样时间为239.5周期                    
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);     //使能指定的ADC1的软件转换启动功能
    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
    return ADC_GetConversionValue(ADC1);    //返回最近一次ADC1规则组的转换结果
}

//得到ADC采样内部温度传感器的值
//取10次,然后平均
u16 T_Get_Temp(void)
{
    u16 temp_val=0;
    u8 t;
    for(t=0;t<10;t++)
    {
        temp_val+=T_Get_Adc(ADC_Channel_16);      //TampSensor
        delay_ms(5);
    }
    return temp_val/10;
}

//获取通道ch的转换值
//取times次,然后平均
u16 T_Get_Adc_Average(u8 ch,u8 times)
{
    u32 temp_val=0;
    u8 t;
    for(t=0;t<times;t++)
    {
        temp_val+=T_Get_Adc(ch);
        delay_ms(5);
    }
    return temp_val/times;
}      

//得到温度值
//返回值:温度值(扩大了100倍,单位:℃.)
short Get_Temprate(void)    //获取内部温度传感器温度值
{
    u32 adcx;
    short result;
    double temperate;
    adcx=T_Get_Adc_Average(ADC_Channel_16,20);  //读取通道16,20次取平均
    temperate=(float)adcx*(3.3/4096);       //电压值 
    temperate=(1.43-temperate)/0.0043+25;   //转换为温度值     
    result=temperate*=100;                  //扩大100倍.
    return result;
}

//main.c
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"   
#include "tsensor.h"

 int main(void)
 {   
    short temp; 
    delay_init();            //延时函数初始化    
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
    uart_init(115200);      //串口初始化为115200
    LED_Init();             //初始化与LED连接的硬件接口
    LCD_Init();             //初始化LCD
    T_Adc_Init();               //ADC初始化        
    POINT_COLOR=RED;//设置字体为红色 
    LCD_ShowString(30,50,200,16,16,"WarShip STM32");    
    LCD_ShowString(30,70,200,16,16,"Temperature TEST"); 
    LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
    LCD_ShowString(30,110,200,16,16,"2015/1/14");     
    POINT_COLOR=BLUE;//设置字体为蓝色      
    LCD_ShowString(30,140,200,16,16,"TEMPERATE: 00.00C");         
    while(1)
    {
        temp=Get_Temprate();    //得到温度值 
        if(temp<0)
        {
            temp=-temp;
            LCD_ShowString(30+10*8,140,16,16,16,"-");   //显示负号
        }
        else
            LCD_ShowString(30+10*8,140,16,16,16," ");   //无符号       
        LCD_ShowxNum(30+11*8,140,temp/100,2,16,0);      //显示整数部分
        LCD_ShowxNum(30+14*8,140,temp%100,2,16, 0X80);  //显示小数部分
        LED0=!LED0;
        delay_ms(250);  
    } 
}
STM32-内部温度传感器实验 ADC1通道16采集芯片内部温度传感器的电压,将电压转算为温度后显示在液晶屏上。 阅读详情

相关推荐

STM32——DS18B20温度传感器

STM32——BS18B20温度传感器

weixin_62584795的博客 1万+

STM32内部温度传感器使用方法详解

STM32内部集成了一个片上温度传感器,可以用来测量MCU及周围的温度。测量范围:-40~125,精度±1.5℃。虽然精度不高,但在某些应用场景下是够了的,相比于外部接入传感器,使用内部温度传感器既可以节省成本,又可以简化电路。

ShenZhen_zixian的博客 1万+

STM32学习日志——内部温度传感器实验

STM32学习日志——内部温度传感器实验\\\插播一条:自己在今年整理一套单片机单片机相关论文800余篇论文制作思维导图原理图+源代码+开题报告+正文+外文资料想要的同学私信找我。一、内部温度传感器简介STM32有一个内部温度传感器,与ADCx的通道16相连,主要用来测量CPU及周围的温度,推荐采样时间为17us,测量温度范围为-40至125度,精度较差,可能有正负1.5度的误差,更适合用来检测温度的变化,因为它的温度差值还是比较准确的。二、配置函数1)设置ADC,开启内部温度传感器,与上一讲类似;2)读取

l16756062003的博客 711

STM32开发(15)----芯片内部温度传感器

本章介绍STM32芯片温度传感器的使用方法和获取方法。STM32 有一个内部的温度传感器,可以用来测量 CPU 及周围的温度( 内部温度传感器更适合于检测温度的变化,需要测量精确温度的情况下,应使用外置传感器 )。对于 STM32F103来说,该温度传感器在内部和 ADC1_IN16 输入通道相连接,此通道把传感器输出的电压转换成数字值。温度传感器模拟输入推荐采样时间是 17.1us。STM32F103 内部温度传感器支持的温度范围为:-40~125 度。精度为±1.5℃左右。

疯狂飙车的蜗牛的博客 9290

STM32微控制器ADC内部温度传感器应用指南

STM32微控制器是ST公司基于ARM Cortex-M内核系列的一种广泛使用的32位微控制器。ADC(模数转换器)是微控制器的重要组成部分,用于将模拟信号转换为数字信号,以便于微控制器处理。

weixin_28840811的博客 770

STM32F408内部温度传感器实验指导

STM32F408微控制器,作为STM32系列中的一员,它被广泛应用于多种嵌入式系统开发中。其核心为ARM Cortex-M4处理器,搭载了丰富的外设接口,例如GPIO、UART、SPI和I2C等。它的高性能与灵活的配置选项,使它成为工程师们在需要高处理能力的项目中不可或缺的选择。本章节将对STM32F408进行初步的介绍,包括它的基本特性、内部结构以及它在现代电子设计中的重要角色。我们将探讨该微控制器的处理速度、内存容量、以及其在各种应用场景中的应用潜力。

weixin_29443363的博客 1096

[嵌入式]stm32内部温度传感器实验

实验概述 文章目录实验概述一.概述二.实验平台(1)硬件平台ALIENTEK MiniSTM32 开发板(2)软件平台三.实验过程1.STM32 内部温度传感器简介2.硬件设计3.软件设计四.实现 一.概述 内部ADC及温度传感器采集MCU内部电压及温度: MCU内部ADC及传感器获取电压及温度值使用数码管或LED点阵或串口等显示获取到的电压及温度值 二.实验平台 (1)硬件平台ALIENTEK MiniSTM32 开发板 (2)软件平台 MDK5 MDK 源自德国的 KEIL 公司,是 RealVie

qq_43587354的博客 4823

在中国大陆使用 LiveKit 集成阿里云语音交互服务

通过集成阿里云的语音和模型服务,我们可以快速构建出适合中国用户的 LiveKit 智能语音应用。LiveKit Agents 框架的模块化设计使得替换底层服务变得异常简单,只需要更换相应的插件实例即可。使用 WebSocket 版本的阿里云 ASR 接口以获得更低的延迟。利用通义千问的 Function Calling 能力对接智能家居或企业内部 API。结合 LiveKit 的视频处理能力,打造具备视觉交互的数字人。希望这篇博客能为你在实时音视频与 AI 结合的探索之路上提供帮助!

星空漫野 1237

stm32 内部温度传感器使用

STM32系列微控制器内置了一个温度传感器,可用于测量CPU及其周围环境的温度。该传感器通过ADC(模数转换器)的特定输入通道(通常为ADC1_IN16或ADC1_IN18,具体取决于STM32的型号)连接,将温度转换为模拟电压信号,再由ADC转换为数字值。STM32内部温度传感器的测量范围通常为-40°C至125°C,精度约为±1.5°C。尽管精度不高,但在许多应用场景中已足够使用,特别是在需要节省成本和简化电路设计的场合。

u013050118的专栏 2470

【生成数据集EXCEL文件】使用生成对抗网络GAN生成数据集:输出生成数据集EXCEL

生成器的任务是接收随机噪声向量作为输入,并尽可能生成与真实数据相似的样本,而判别器则是一个二分类器,旨在区分输入的样本是来自生成器生成的,还是来自真实数据。在训练过程中,生成器和判别器通过对抗学习的方式相互博弈,生成器的目标是生成足以欺骗判别器的样本,而判别器的目标则是尽可能准确地判断样本的真实性。GAN网络在多个领域展现了强大的能力,能够生成与训练数据分布相似的新数据,包括但不限于图像生成、图像风格转换、超分辨率、数据增强、视频生成、自然语言处理、医学图像处理以及游戏与虚拟现实等。

hustef的博客 1521

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py库,详细演示了如何读取HDF5文件结构、理解数据分类(如传感器、健康参数、场景描述符)并加载为Pandas DataFrame。文章还澄清了数据集中常见的变量数量疑惑,并给出了从数据加载到构建剩余使用寿命预测模型预处理流水线的完整代码,帮助工程师和研究人员高效入门航空发动机预测性维护分析。

weixin_29057065的博客 422

32_STM32内部温度传感器实验

STM32内部温度传感器实验

Yuanghxb的博客 3896

项目实训(四)——SAM模型的学习与部署

这里的show_mask就是我们用mask的prompt进行分割,show_points就是我们用points进行分割,show_box就是通过box进行分割,这是SAM的三种prompt的方式。总的来说,Meta AI 的 Segment Anything 模型为我们提供了一种全新的物体识别和分割方式,其强大的泛化能力和广泛的应用前景将极大地推动计算机视觉领域的发展。这里有vit_h、vit_b、vit_l三种权重模型,这里可以根据自己的需要下载相应的权重模型。我们是下载的vit_h权重模型。

yyyyyyyx_的博客 1421

STM32G474内部温度传感器的使用

本文主要介绍STM32G474内部温度传感器的使用的使用方法,包括实现原理,STM32Cube配置参数,已经算法实现。

mftang的博客 2410

MATLAB 论文复现——面向紧急需求响应的规模化灵活资源负荷管理快速决策方法

其次,对灵活资源参与EDR的功率分配模型进行了建模,并提出了基于分层分布式共识算法的快速决策方法,对功率分配模型进行快速求解,以满足EDR实时性的需求,在保证较高精度的前提下提高了决策速度。[1]孔祥玉,杨至端,孙裕策,等.面向紧急需求响应的规模化灵活资源负荷管理快速决策方法[J/OL].电力系统自动化,1-13[2024-07-29].http://kns.cnki.net/kcms/detail/32.1180.TP.20240709.1843.002.html.关键词: 规模化灵活资源;

sjr1478的博客 374

Light Tools 8.4 在 win10系统上的安装方法(64位)

** 总的来说安装LT需要以下步骤(折腾了三天终于装好): 安装LT软件–禁用签名–加载含数字签名的第三方inf–添加注册表/安装驱动/添加密钥–成功破解 一、下载对应的LightTools 8.4版本软件,如下图为解压后的文件: 并选择 进行默认安装。 二、禁用数字签名。这里我用了两种方法,一种不行就换另一种,最终成功禁用。 方法1: 1、输入“cmd”并以管理员身份运行; 2、输入或复制 bcdedit.exe /set nointegritychecks on (此命令若没成功,再试bcded

weixin_45560953的博客 1万+

STM32学习心得二十四:内部温度传感器原理及实验

记录一下,方便以后翻阅~ 主要内容: 1) STM32内部温度传感器概述;2 ) 相关实验代码解读。 实验功能:系统启动后,实时将内部温度传感器的值传至串口助手上。 官方资料:《STM32中文参考手册V10》第11章——温度传感器 1. 内部温度传感器框图 2. STM32内部温度传感器概述 2.1 STM32有一个内部的温度传感器,可以用来测量CPU及周围的温度(TA); 2.2 该温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值; 2.3

Leisure_ksj的博客 1万+

计算机组成原理(第三版)唐朔飞-第五章输入输出系统-课后习题

计算机组成原理(第三版)唐朔飞-第五章输入输出系统-课后习题

weixin_45735391的博客 6万+

STM32CUBEMX配置教程(十)STM32的ADC读取内部温度传感器

STM32CUBEMX配置教程(十)STM32的ADC读取内部温度传感器

weixin_44584198的博客 1万+

商品标签识别系统:基于YOLO系列的深度学习实现

随着零售行业的快速发展和自动化需求的增长,商品标签识别技术变得越来越重要。本文详细介绍了一个完整的商品标签识别系统,该系统基于YOLO系列目标检测算法(包括YOLOv5、YOLOv8和YOLOv10),采用PySide6构建用户界面,并提供完整的训练代码和数据集处理方案。该系统能够准确识别商品标签中的关键信息,如价格、条形码、生产日期等,为零售自动化、库存管理和智能结算提供技术支持。

YOLO 349

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

stm32l151的内部温度传感器_STM32的ADC及内部温度传感器的使用

ADC的用途范围可以说是非常的广泛~甚至是可以说差不多必不可少了~大部分单片机嵌入式系统ADC都基本要用到~包括牛人CZZ也一样!STM32自带1-3个ADC模块,采样精度达到了12位,比起当年使用的AVR单片机的10位来说,上了个小档次了~本测试程序采用了ADCDMA的中断方式,这样CPU就可以把ADC的任务交给DMA这个勤劳肯干的部下了,当DMA完成了一次任务之后会产生中断,告诉CPU可以来查...

weixin_39781930的博客 1243

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

STM32的内部温度传感器

1、STM32的内部温度传感器    STM32内部温度传感器与ADC的通道16相连,与ADC配 合使用实现温度测量。测量范围–40~125℃,精度 ± 1.5℃ 操作流程:    1)、设置ADC相关参数    // ADC1 configuration -----------------------------    ADC_InitStructure.AD...

weixin_33860147的博客 6140

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

STM32 ADC原理与内部温度传感器实验

文章参考 [1] 【STM32】ADC库函数 https://blog.youkuaiyun.com/qq_38410730/article/details/80080660 [2] 逐次逼近比较型adc原理 https://blog.youkuaiyun.com/sinat_20265495/article/details/79568492 [3] STM32F1 ADC模数转换简介 https://baijia...

qq_40318498的博客 8093
上一篇: STM32 待机唤醒
下一篇: 各种总线协议简介
炒青蛙
博客等级 码龄13年 53粉丝 19原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值