发 帖  

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

1775 UCOSIII DHT11
2019-9-19 01:24:56   1 评论 分享淘帖 邀请回答 举报
1 条评论
  • 2023-4-29 13:55

    两种选择,
    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--) ;   
       }
    }
    实测可行,刚用完。

3个回答
2019-9-19 09:09:27 评论

举报

2019-9-19 09:24:11 1 评论

举报

1 条评论
  • 2023-4-29 13:56

    两种选择,
    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 评论

举报

只有小组成员才能发言,加入小组>>

7670个成员聚集在这个小组

加入小组

创建小组步骤

快速回复 返回顶部 返回列表
关注微信公众号

电子发烧友网

电子发烧友论坛

社区合作
刘勇
联系电话:15994832713
邮箱地址:liuyong@huaqiu.com
社区管理
elecfans短短
微信:elecfans_666
邮箱:users@huaqiu.com
关闭

站长推荐 上一条 /6 下一条

快速回复 返回顶部 返回列表