野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9370|回复: 1

AM2305传感器 数据上不来问题请教?

[复制链接]
发表于 2018-9-20 13:46:56 | 显示全部楼层 |阅读模式
stm32 在一个工程中 移植ucosiii 建立个任务采集AM2305温湿度传感器,可是数据一直没有采集上来
ucos iii 是 参考移植例子
任务如下
static  void  AppTaskAM2305 ( void * p_arg )
{
          OS_ERR      err;
       while (DEF_TRUE) {  
         
                 OSSchedLock(&err);//进入临界区
              if( DHT11_Read_TempAndHumidity ( & DHT11_Data ) == SUCCESS)
                {
                 }

                 OSSchedUnlock(&err);        //退出临界区
               OSTimeDly ( 50, OS_OPT_TIME_DLY, & err );  
       }
   
}


温湿度采集中的延时使用delay函数, 时间延时是的时候禁止任务的切换和调度 所以这块应该没有问题
而且仿真的时候单歩调试,delay 也没有跑飞, 就是等待采集时候信号管脚始终采集不上来。
在裸机下相同的硬件 相同的采集程序 就没有问题,一直查找不到原因请教下各位?
回复

使用道具 举报

 楼主| 发表于 2018-9-20 13:48:00 | 显示全部楼层
uint8_t DHT11_Read_TempAndHumidity(DHT11_Data_TypeDef *DHT11_Data)
{  
        /*输出模式*/
        DHT11_Mode_Out_PP();
        /*主机拉低*/
        macDHT11_Dout_0;
        /*延时18ms*/
        Delay_ms(18);

        /*总线拉高 主机延时30us*/
        macDHT11_Dout_1;

        Delay_us(30);   //延时30us

        /*主机设为输入 判断从机响应信号*/
        DHT11_Mode_IPU();

        /*判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行*/   
        if(macDHT11_Dout_IN()==Bit_RESET)     

        {
                /*轮询直到从机发出 的80us 低电平 响应信号结束*/  
                while(macDHT11_Dout_IN()==Bit_RESET);

                /*轮询直到从机发出的 80us 高电平 标置信号结束*/
                while(macDHT11_Dout_IN()==Bit_SET);

                /*开始接收数据*/   
                DHT11_Data->humi_int= DHT11_ReadByte();

                DHT11_Data->humi_deci= DHT11_ReadByte();

                DHT11_Data->temp_int= DHT11_ReadByte();

                DHT11_Data->temp_deci= DHT11_ReadByte();

                DHT11_Data->check_sum= DHT11_ReadByte();


                /*读取结束,引脚改为输出模式*/
                DHT11_Mode_Out_PP();
                /*主机拉高*/
                macDHT11_Dout_1;

                /*检查读取的数据是否正确*/
                if(DHT11_Data->check_sum == DHT11_Data->humi_int + DHT11_Data->humi_deci + DHT11_Data->temp_int+ DHT11_Data->temp_deci)
                        return SUCCESS;
                else
                        return ERROR;
        }
        
        else
                return ERROR;
        
}
就是红色部分读不到数
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-6-16 02:17 , Processed in 0.033311 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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