嵌入式学习小组
直播中

张林

8年用户 138经验值
私信 关注

为什么在UCOS中读取DHT11的值是一个定值?

在UCOSIII中,当只有一个读取DHT11值任务执行的时候可以正常读取,当加入一个LED闪烁任务的时候,读取DHT11的值就是一个定值(加入了禁止任务调度也不不行,就只有读取DHT11一个任务执行时才可以正常显示),请问这是什么原因? 谢谢

回帖(3)

李奂善

2019-9-19 09:09:27
仿真找问题
举报

张小林

2019-9-19 09:24:11
最后怎么解决的呀
1 举报
  • 赌徒123: 两种选择,
    1、关闭systick中断,因为在SysTick_Handler中依然会切换任务,导致DHT11的读取不正确。
    2、直接用while写delay函数,
    //微秒级的延时
    void delayus(u16 time)
    {   
       u16 i=0;  
       while(time--)
       {
          i=10;  //自己定义
          while(i--) ;   
       }
    }

    //毫秒级的延时
    void delayms(u16 time)
    {   
       u16 i=0;  
       while(time--)
       {
          i=12000;  //自己定义
          while(i--) ;   
       }
    }
    实测可行,刚用完。

赵鑫

2019-9-19 09:32:43
来一个解决方案呗
举报

更多回帖

发帖
×
20
完善资料,
赚取积分