想写一个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循环那里。这是怎么回事
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>