注意:1、ADC_TempSensorVrefintCmd(ENABLE); //开启内部温度传感器
2、ADC读出来的是电压值,要按公式来转换T(℃) ={(V25-Vsense) /Avg_Slope}+25
V25=Vsense 在 25 度时的数值(典型值为: 1.43)。
Avg_Slope=温度与 Vsense 曲线的平均斜率(单位为 mv/℃或 uv/℃)(典型值为
4.3Mv/℃)。
temp=((1.43-temp)/0.0043)+25;//uv
temp=temp*100;//100倍变为mv

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "rtc.h"
#include "adc.h"
#include "tlc549.h"void myCpuTemInit(void);
u16 myCpuTemHandler(u8 ch);
u16 Cpu_tem(u8 ch,u8 time);int main(void){  u16 cpu_val=0;float temp=0;delay_init();           //延时函数初始化    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);    //设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(115200);     //串口初始化为115200LED_Init();                //LED端口初始化KEY_Init();LCD_Init();myCpuTemInit();LCD_ShowString(30,140,200,16,16,"TEMPERATE: 00.00C");  while(1) {     cpu_val=Cpu_tem(ADC_Channel_16,10);//通道16,计算次数10//LCD_ShowxNum(156,130,cpu_val,3,16,0);//寄存器的值只有8位,2^8=255最大值为3位temp=cpu_val*(float)(3.3)/4095;//检测到的电压值temp=((1.43-temp)/0.0043)+25;//4.3mv=0.0043Vtemp=temp*100;//为了方便显示//LCD_ShowxNum(156,130,temp,6,16,0);//寄存器的值只有8位,2^8=255最大值为3位LCD_ShowxNum(30+11*8,140,temp/100,2,16,0);        //显示整数部分LCD_ShowxNum(30+14*8,140,((u16)temp)%100,2,16, 0X80);  //显示小数部分LED0=!LED0;delay_ms(250);}
}// ADC1 的通道 1(PA1)来读取外部电压值显示在TFT上面 void myCpuTemInit(void)
{GPIO_InitTypeDef GPIO_InitStructure;ADC_InitTypeDef ADC_InitStruct;//1) 开启 PA 口时钟和 ADC1 时钟,设置 PA1 为模拟输入。RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);//使能ADC时钟//2) 复位 ADC1,同时设置 ADC1 分频因子ADC_DeInit(ADC1);//ADC最大转换频率为1MHz,对应的最大转换时间就是1us// ADC 的转换时间公式=Tcovn=采样时间+12.5个周期// ADCCLK=14Mhz 的时候,设置 1.5 个周期的采样时间,则得到: Tcovn=1.5+12.5=14 个周//期=1us。//APB2对应的时钟频率是72MHz,分频因子要确保 ADC1 的时钟(ADCCLK)不超过14Mhz。//6分频之后72/6=12Mhz,所以ADC的频率是12MhzRCC_ADCCLKConfig(RCC_PCLK2_Div6);//3) 初始化 ADC1 参数, 设置 ADC1 的工作模式以及规则序列的相关信息。ADC_InitStruct.ADC_Mode=ADC_Mode_Independent;//ADC 工作模式:独立模式ADC_InitStruct.ADC_ScanConvMode=DISABLE;//AD 单通道模式ADC_InitStruct.ADC_ContinuousConvMode=DISABLE;//AD 单次转换模式ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//转换由软件而不是外部触发启动ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;//ADC 数据右对齐ADC_DataAlign_Right,左对齐会咋样?ADC_DataAlign_LeftADC_InitStruct.ADC_NbrOfChannel=1;//顺序进行规则转换的 ADC 通道的数目 1ADC_Init(ADC1, &ADC_InitStruct);ADC_TempSensorVrefintCmd(ENABLE); //开启内部温度传感器//4) 使能 ADC 并校准。//执行复位校准和 AD 校准,注意这两步是必须的!不校准将导致结果很不准确。ADC_Cmd(ADC1,ENABLE);//使能 ADCADC_ResetCalibration(ADC1);//复位校准ADC_StartCalibration(ADC1);//AD 校准//记住,每次进行校准之后要等待校准结束。 这里是通过获取校准状态来判断是否校准是否结束//一旦校准结束, CAL位被硬件复位   校准状态复位完成的返回值是0,while(ADC_GetResetCalibrationStatus(ADC1));//等待复位校准完成 为0时退出whilewhile(ADC_GetCalibrationStatus(ADC1));//等待AD 校准完成//LCD_ShowString(60,130,200,16,16,"ADC_CH0_VAL:");//ADC采样值//LCD_ShowString(60,150,200,16,16,"ADC_CH0_VOL:0.000V");    //电压值
}//返回 ADC 值
//ch:通道值 0~3
u16 myCpuTemHandler(u8 ch)
{//5) 设置规则通道1的参数//ADC1的通道1,Rank:规则顺序中的第一个转换1,ADC_SampleTime:采样周期ADC_RegularChannelConfig(ADC1, ch, 1,ADC_SampleTime_239Cycles5);ADC_SoftwareStartConvCmd(ADC1,ENABLE);//使能指定的 ADC1 的软件转换启动功能while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束return ADC_GetConversionValue(ADC1);//获取转换 ADC 转换结果数据,16位里面含有12位,右对齐,高位对齐
}//return: ADC平均值
//ch:通道16,  time:采集次数
u16 Cpu_tem(u8 ch,u8 time)
{u8 i=0;u16 adc_value=0;for(i=0;i<time;i++){adc_value+=myAdcHandler(ch);delay_ms(10);}return (adc_value/time);
}

炒冷饭系列-STM32F103之CPU温度测量相关推荐

  1. 炒冷饭系列:设计模式 单例模式

    2019独角兽企业重金招聘Python工程师标准>>> 炒冷饭系列:设计模式 单例模式 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆 ...

  2. 【华为云技术分享】MongoDB经典故障系列六:CPU利用率太高怎么办?

    618大促,全民狂欢,但热闹是属于疯狂剁手的人们.而开发者们有的缺是"高流量.高访问.高并发"三高下带来的种种问题.为了应对大促期间的高I/O情况,企业会选择MongoDB云数据库 ...

  3. 云服务器cpu系列,云服务器cpu系列

    云服务器cpu系列 内容精选 换一换 公有云提供了几种类型的弹性云服务器供您选择,针对不同的应用场景,可以选择不同规格的弹性云服务器.X86计算型:通用计算型通用计算增强型通用入门型内存优化型超大内存 ...

  4. Expert 诊断优化系列------------------你的CPU高么?

    现在很多用户被数据库的慢的问题所困扰,又苦于花钱请一个专业的DBA成本太高.软件维护人员对数据库的了解又不是那么深入,所以导致问题迟迟不能解决,或只能暂时解决不能得到根治.开发人员解决数据问题基本又是 ...

  5. e系列是服务器CPU吗,Intel-至强E系列CPU参数

    <Intel-至强E系列CPU参数>由会员分享,可在线阅读,更多相关<Intel-至强E系列CPU参数(6页珍藏版)>请在人人文库网上搜索. 1.Intel Xeon E系列服 ...

  6. e系列是服务器CPU吗,教你识别英特尔E系列服务器CPU

    最近英特尔全面推出E系列服务器处理器,以往人们习惯的以Xeon 5500/5600系列区分档次的经验有些不灵了,这也给广大服务器DIY用户造成了一些不便.在这里,我们随着宝通技术经理简单地看一下英特尔 ...

  7. i9x系列是服务器CPU吗,i9-10920X和i9-10940X性能实测 CPU性能并不算十分令人满意

    描述 自从Intel在2009年发布酷睿i7-920之后,通过酷睿2架构和X58平台的成功定位,牢牢锁定HEDT桌面级发烧级平台十年之久. 随着AMD发布Zen 2系列CPU,Intel作为应对已经确 ...

  8. Siryn 微架构之声:安培 One 系列 192 核心 CPU。芯粒、高级封装和虚伪的性能宣传

    Dylan Patel.Gerald Wong.George Cozma 2023年5月18日 目录 云原生--是市场营销的花边新闻吗? 安培 One 系列--Siryn 封装和热设计 性能--虚伪和 ...

  9. i9x系列是服务器CPU吗,虽是i9入门款 但却已在众山巅_Intel 酷睿i9 7900X_CPUCPU评测-中关村在线...

    Intel此次推出的i9-7900X虽然仅是i9大军的排头兵,却也已经显露出了不俗的实力.尤其是在处理器运算能力方面,i9-7900X凭借原生十核心而是线程以及全核心睿频至4.3GHz的硬实力,性能超 ...

最新文章

  1. list字母排序 java_通过Java排序List集合的元素的几种方法
  2. 【数据竞赛】高质量数据科学竞赛平台汇总
  3. mfc 中获得本身程序句柄的代码
  4. Elementui select 设置点击事件,在Change事件前触发
  5. 【0】python核心编程,第二章
  6. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 员工离职管理
  7. 《Python编程快速上手——让繁琐工作自动化》——2.8 导入模块
  8. rainmeter皮肤编写教程
  9. 容安馆札记 606-610则 笺疏
  10. 黑苹果睡眠重启后死机_iPhone 所有机型“死机/卡机”重启方法
  11. 从零开始免费搭建自己的博客(七)——迁移 CSDN 博客到个人博客站点
  12. 【鑫鑫批量挂Q器 v2.0绿色版】
  13. 熟练运用计算机的重要性,计算机*实习目的和意义
  14. size_t和size_type
  15. 立创EDA能代替传统的PCB设计软件么?比如AD、protel等?可以
  16. input输入框添加键盘事件
  17. 【其他】程序员装修指南
  18. 有了它,Python“咸鱼”迅速翻身!
  19. Java数组转集合之Arrays.asList()用法
  20. python模拟器ipad_Appium+python自动化19-iOS模拟器(iOS Simulator)安装自家APP【转载】

热门文章

  1. Linux之traceroute命令
  2. 最小二乘拟合的三种算法推导及Python代码
  3. 地级市高新技术企业统计情况(2000-2019)
  4. 数据库的应用之(金融)
  5. python自动抓取聊天群内容_python微信聊天机器人改进版,定时或触发抓取天气预报、励志语录等,向好友推送...
  6. 会计计算机模拟手工实验,2013计算机模拟手工实验.doc
  7. 程序丸子的校招个人经验——简历篇
  8. 移动互联应用阶段学习总结
  9. STM32理论 —— μCOS-Ⅲ
  10. scrum回顾_[原创]如何开回顾会议(retrospective meeting)