新手上路
- 积分
- 25
- 金钱
- 25
- 注册时间
- 2021-11-16
- 在线时间
- 6 小时
|
2金钱
具体情况如下所述:同样一个DHT11的BSP我在裸机情况下可以正常使用,移植到带OS的环境下就不行了,这个时候它可以正常读取到起始的信号帧,随后的数据帧直接是一个比特位都无法正常读入。尝试过直接移植板子教程里边的BSP,情况一样。在示波器里边捉到的信号表示,起始的18ms低电平持续时间在19.8ms-20.3ms左右(程序里边设定延时20ms),随后20-40us高电平持续时间在30-31us之间(程序设定延时30us)。至此,在时序上应该没什么问题。但是就比较奇怪,它就只能够成功读取到起始部分,随后的数据部分一个比特都读不进去。现在怀疑的一个方向是明面上延时了1个或者几个到几十个us,实际上可能快了或者慢了,不过这跟发送起始信号时主动从低电平改为高电平时正确的延时时间相悖,当然也可能是我的示波器它捉不准的缘故。 一共尝试过:①传感器驱动代码换一个方式重写,不行。
②我怀疑我写的有问题,所以在教程源码里边找到用到OS的工程把里边的传感器源码移植过来用,不行。
③使用另一个OS环境,不行。
④更改GPIO,不行。
⑤在读取之前关闭中断,不行。
⑥这个尝试是我想试试会不会因为我给读取任务分配的堆栈小了导致无法读取,将原来分配的128改大了,不行。
⑦在②④⑤⑥的基础之上把任务优先级设定为最高,甚至极端了一些用了信号量,只要这个任务没完成其他任务全部等待,不行。
⑧可能传感器坏了?那么更换传感器,很遗憾还是不行(这个尝试肯定没用,裸机都能用呢,传感器坏了它裸机怎么正常读)。
⑨上边的都试完了,这次我将所有的延时都改了一下,比如延时2us我改3us这样,改大了一些,结果是----不行。好吧,我也只好躺平来求助各位网友了。
上边所说的情况最为让我不解的是,不使用操作系统的时候它能够正常读取到数据帧,一上系统就完蛋。我是个菜鸟,这个搞不懂什么情况。我想应该会有网友也遇到过一样或者类似的问题吧。
OS的时基是1ms为一个tick。 事实上不仅仅是DHT11不行,用DS18B20也一样,无法成功读取到数据帧。 它就好像是可以作为输出但无法作输入一样,我自己写的代码还是用板子教程的源码都是这样。用的板子是正点原子探索者F407,RTOS是μ/COSIII,加了STemWIN以及LwIP,用的玩意比较多,其实不关事,因为这个问题是在我裸机加OS的时候就出现了,当时是已经把要用到的BSP写好或者移植好并在裸机上测试过正常后才加入OS的。魔幻的问题 。
|
|