Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
dht11
DS18B20
急救,关于DHT11和DS18B20温度传感器
发布于 2016-05-25 15:58:31 浏览:4595
订阅该版
急救各位大神,大哥大姐! 我在做本科毕设,遇到一个很奇怪的问题:我要用DS18B20或DHT11温度传感器景行获取环境温度。在裸机跑程序两个都可正常采集温度,单运行在RT-Thread上就不行了,它输出的温度总是 0度。 我专用一个线程来获取温度但如果里面调用 rt_thread_delay() 函数让它每隔 2s 进行采集一次,他就只执行入口函数头一次,然后不知道跑到哪儿去???如果不用的话他就正常。但就是获取不报温度。。。。 我用的RT-Thread版本是 1.2.1,还移植了LwIP等。 求各位解谜。谢谢,谢谢! 我的代码如下: ```c u8 DHT11_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; delay_init(); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//????GPIOG?±?? //GPIOG9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//???¨???????? GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//???ì???? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//???? GPIO_Init(GPIOB, &GPIO_InitStructure);//?????? DHT11_Rst(); return DHT11_Check(); } void DHT11_Rst(void) { DHT11_IO_OUT(); //SET OUTPUT DHT11_DQ_OUT=0; //??DQ delay_ms(20); //????18ms DHT11_DQ_OUT=1; //DQ=1 delay_us(30); //????20~40us } u8 DHT11_Check(void) { u8 retry=0; DHT11_IO_IN();//SET INPUT while (DHT11_DQ_IN&&retry < 50) { retry++; delay_us(2); }; if(retry>=50)return 1; else retry=0; while (!DHT11_DQ_IN&&retry < 50) { retry++; delay_us(2); }; if(retry>=50)return 1; return 0; } u8 DHT11_Read_Bit(void) { u8 retry=0; while(DHT11_DQ_IN&&retry<50) { retry++; delay_us(2); } retry=0; while(!DHT11_DQ_IN&&retry<50) { retry++; delay_us(2); } delay_us(40);//??40us if(DHT11_DQ_IN)return 1; else return 0; } u8 DHT11_Read_Byte(void) { u8 i,dat; dat=0; for (i=0;i<8;i++) { dat<<=1; dat|=DHT11_Read_Bit(); } return dat; } u8 DHT11_Read_Data(u8 *temp,u8 *humi) { u8 buf[5]; u8 i; DHT11_Rst(); if(DHT11_Check()==0) { for(i=0;i<5;i++)//??40??? { buf*= DHT11_Read_Byte(); } if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4]) { *humi=buf[0]; *temp=buf[2]; } } else return 1; return 0; } void DHT11_Thread_Entry(void *arg) { int Read_Temp_Humi_OK = 1; rt_uint32_t level; /*DHT11 initialize */ while(DHT11_Init()); rt_kprintf("DHT11 Init OK! "); while (1) { rt_enter_critical(); DHT11_Read_Data(&temperature, &humidity); rt_kprintf("Temperature %d ", temperature); rt_exit_critical(); // rt_thread_delay(10); } } ```
查看更多
5
个回答
默认排序
按发布时间排序
dzahz
2016-05-25
这家伙很懒,什么也没写!
读传感器时,把系统中断关掉
LacDaSayBia
2016-05-26
这家伙很懒,什么也没写!
谢谢你的指点。 我在调试过程发现是因为时钟的问题,时钟供给实现delay_us 和delay_ms 不准确,但是现在不知道用哪儿比较准确的方法来实现延时函数。我也刚用TIMER2来实现延时,但是TIMER2时钟原始 APB1时钟是多少?因此也不成功。 哪儿位大神世道系统时钟怎么算? 都是通过锁相环把时钟提到 168Mhz的吗?
langtao
2016-08-14
这家伙很懒,什么也没写!
你好,我也遇到这种问题,请问你解决了吗,求指教
liuxuhuakai
2021-06-29
这家伙很懒,什么也没写!
pll把时钟提高到72mhz.
撰写答案
登录
注册新账号
关注者
0
被浏览
4.6k
关于作者
LacDaSayBia
这家伙很懒,什么也没写!
提问
3
回答
6
被采纳
0
关注TA
发私信
相关问题
1
AB32VG1 导入DHT11软件包报错
2
AB32VG1 DHT1使用软件包初始化失败或找不到sersor
3
bh1750软件包bh1750.c文件里面光照强度是哪个数据?
4
rtt studio 2.2.4版本之前的软件包问题
5
K210-RT-DRACO 导入DHT11软件包报错“SysTick”未声明
6
添加软件包dht11出错
7
studio里我配置了dht11的软件包,实际保存编译后,目录里没有dht11
8
我想在OLED显示屏上显示温湿度数据,
9
v5.02,使用dht11软件包,会找不到”sensor.h“?
10
正点原子精英版(stm32f103zet6)+温湿度(DHT11)+PM2.5(GP2Y101...
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
如何在master上的BSP中添加配置yml文件
2
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
3
RT-Thread 发布 EtherKit开源以太网硬件!
4
rt-thread使用cherryusb实现虚拟串口
5
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部