关于stm32驱动hx711的问题

2019-07-20 22:37发布

想写一个stm32驱动hx711模块的程序
初始化:

#define DT PEout(0)
#define SCK PEout(1)


void HX711_Init(void)        //???HX711??
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);

        GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //CLK?????¨??????????
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOE,&GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//DATA?????¨??????????
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOE,&GPIO_InitStructure);       
}

读取数据值:
u32 DHT11_Read(void)
{
        u32 val = 0;
        u8 i = 0;
        DT=1;
        SCK=0;
        while(DT);   
        delay_us(5);
        for(i=0;i<24;i++)
        {
                SCK=1;
                val=val<<1;
                delay_us(5);  
                SCK=0;
                if(DT)  val++;
                delay_us(5);
        }
        SCK=1;
        val = val^0x800000;
        delay_us(5);
        SCK=0;
        delay_us(5);

        return val;
}


主函数:
while(1)
{
  printf("wendusi%f ",DHT11_Read());
  delay_ms(500);

}
一共25个脉冲,用A通道采集,VCC用的是3.3v,
结果一直没有打印出数据,好像是DT一直是高电平,陷在while循环那里。这是怎么回事
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。