微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 在ucosiii上调试DHT11

在ucosiii上调试DHT11

时间:10-02 整理:3721RD 点击:
DHT11在裸机上的示例代码一大堆,很容易调试通过,但是移植到ucosiii上死活初始化不过,今天搞定了,来说说怎么回事
1、这玩意儿对时间的要求很高,ucosiii中的系统延时不太可能弄到微秒级别,我用的原子的延时也不行,最后牺牲了一个基本定时器去实现延时函数,比较精确



2、在读取温湿度数据时要禁止任务调度,不然导致读出来的数据不正确


我是新手,如果有正在玩这个模块遇到问题的伙伴,咱们一起讨论!

前面的设定CPU设定,时钟,中断等设定都设定了么?

嗯嗯,都配置了

学习了

MARK一下!

不好意思看错了,你晶振是多少的,如果你的指令数较多就很可能达不到微秒级别;如,你的晶振是10MHz的,那么在1微秒内只能震动10次,即电压波动10次,上升降回来1次执行一条命令,即10MHz的晶振,在1微秒内执行5条命令,(这个命令需要按照汇编命令计算,而且不能是类似push的这种集合形式指令,只能是mov 、jn等之类的指令,因为push转换为普通指令应该是一条mov和一条jmp组成),而UCosiii的任务等待队列应该是由至少不下20几条命令实现对任务队列的,而且就算只有你一个任务,那么进入忙等待和其他状态模式,都是有不少指令的,而毫秒级扫描么,扫描一次某地址是一个指令,判断一个指令然后反馈结果一个指令,算算估计要满足毫秒级的要求,目测估计指令数在40条往上,就按每条指令震动1次,就需要至少80次,每毫秒80次就是需要至少晶振是80MHz的,估计51芯片在这么高的频率下是无法工作的。

正好需要用,作为参考

正好需要用,作为参考

正好需要用,作为参考

正好需要用,作为参考

正好需要用,作为参考

正好需要用,作为参考

正好需要用,作为参考

我用的是STM32F103,主频是72M

可以考虑自己用C语言编写程序,然后编译后的.hex文件每个字节(xxh)算是一个代码,整体扫描加判断和循环整个流程如果小于100字节就应该没啥问题。当然要模拟信号采集装置也是要跟上的才行。

这是什么搞难度的?

不明白小编发帖的哦?

正好需要用,作为参考

分享无限可能,助人助己。

谢谢分享,学习学习。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top