完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void T_Adc_Init(void)
{ ADC_InitTypeDef ADC_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE); ADC_DeInit(ADC1); ADC_Structinit(&ADC_InitStructure); ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Backward; ADC_Init(ADC1, &ADC_InitStructure); ADC_ChannelConfig(ADC1,ADC_Channel_16, ADC_SampleTime_239_5Cycles ); ADC_TempSensorCmd(ENABLE); ADC_GetCalibrationFactor(ADC1); ADC_Cmd(ADC1, ENABLE); while(ADC_GetFlagStatus(ADC1,ADC_FLAG_ADEN)==RESET); ADC_StartOfConversion(ADC1); } uint16_t T_Get_Adc() //读取采样值 { ADC_ChannelConfig(ADC1,ADC_Channel_16, ADC_SampleTime_239_5Cycles ); ADC_StartOfConversion(ADC1); while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC )); return ADC_GetConversionValue(ADC1); } uint16_t T_Get_Adc_Average(uint8_t times)//读取多次采样值求平均 { uint32_t temp_val=0; uint8_t t; for(t=0;t temp_val+=T_Get_Adc(); delay_ms(5); } return temp_val/times; } int main(void) { uint32_t adcx=0,temp_a=0; float temp; T_Adc_Init(); while(1) { adcx=T_Get_Adc_Average(10); temp=((float)adcx*(3.3/4096)); temp=(1.43-temp)/0.0043+25; temp_a=temp*1000;// 扩大温度值的1000倍 } } |
|
相关推荐
12个回答
|
|
本帖最后由 andeyqi 于 2018-6-23 15:33 编辑
不能,内部的传感器 应该是检测CPU温度用的,CPU运行起来温度肯定和室温不是一个量级的,而且精度也相对低些,主要是用来查看CPU温度变化的趋势。要测室温建议加温度传感器把 |
|
|
|
完全不能,不管单片机工不工作,室温对芯片内部温度的影响都完全不可测。
|
|
|
|
用热敏电阻去检测吧
|
|
|
|
肯定不能,内部温度测试的是MCU的温度,和室内温度不是一回事
|
|
|
|
内部温度传感器一般用来检测CPU的温度,测量室温一般需要别的温度传感器
|
|
|
|
试想一下,MCU内部温度传感器不是直接和外部环境接触,能得到环境温度吗?
|
|
|
|
最好还是用外部的,内部的要考虑MCU本身发热的问题,
|
|
|
|
|
|
|
|
不能,没有太大意义
|
|
|
|
一种方法是使用一个差分放大器接在热敏电阻两端,热敏电阻接在一个电阻分压器中,再将测量的电压和温度通过计算或实验一一对应起来。还有一种就是买现成的温度传感器,这样的传感器有很多,数字模拟的都有。
|
|
|
|
别开玩笑啦,一个18B20几元的事让你搞成复杂的事
|
|
|
|
关外设,进低功耗模式,然后你再测误差多大不会很夸张的,在没有外部芯片的时候还是勉强可以这么用的
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2201 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2027 浏览 3 评论
4633 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2171 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2705 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 22:51 , Processed in 0.729784 second(s), Total 65, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号