在ucosiii上调试DHT11
1、这玩意儿对时间的要求很高,ucosiii中的系统延时不太可能弄到微秒级别,我用的原子的延时也不行,最后牺牲了一个基本定时器去实现延时函数,比较精确
![](../imgqa/ele/mcu/mcu-3721rd.com-16881je3h5dtxhzs.png)
![](../imgqa/ele/mcu/mcu-3721rd.com-16882fi4qms4r14s.png)
2、在读取温湿度数据时要禁止任务调度,不然导致读出来的数据不正确
![](../imgqa/ele/mcu/mcu-3721rd.com-16883gj5obfzs2ks.png)
我是新手,如果有正在玩这个模块遇到问题的伙伴,咱们一起讨论!
前面的设定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字节就应该没啥问题。当然要模拟信号采集装置也是要跟上的才行。
这是什么搞难度的?
不明白小编发帖的哦?
正好需要用,作为参考
分享无限可能,助人助己。
谢谢分享,学习学习。