驱动函数
u32 Hx_Read(void) //增益128
{
u32 val = 0;
u32 i = 0;
GPIO_ResetBits(GPIOA, GPIO_Pin_1); //初始状态SCK引脚为低电平
while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0));
for(i=0; i<24; i++)
{
delay_us(100);
GPIO_SetBits(GPIOA,GPIO_Pin_1);
val=val<<1;
delay_us(1);
GPIO_ResetBits(GPIOA,GPIO_Pin_1);
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0))
val++;
delay_us(1);
}
GPIO_SetBits(GPIOA,GPIO_Pin_1);
val = val^0x800000;
delay_us(1);
GPIO_ResetBits(GPIOA,GPIO_Pin_1);
delay_us(1);
return val;
}
main方法
while(1){
asd=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);
GPIO_ResetBits(GPIOA,GPIO_Pin_0);
OLED_DISPLAY_8x16(4,3*8,'0');//
OLED_DISPLAY_8x16(6,3*8,asd/1000000+0x30);//
OLED_DISPLAY_8x16(6,4*8,asd%100000/10000+0x30);//
OLED_DISPLAY_8x16(6,5*8,asd%10000/1000+0x30);//
OLED_DISPLAY_8x16(6,6*8,asd%1000/100+0x30);//
OLED_DISPLAY_8x16(6,7*8,asd%100/10+0x30);//
OLED_DISPLAY_8x16(6,8*8,asd%10+0x30);//
delay_s(1); //延时1秒
asd=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1);
//asd=Hx_Read();
OLED_DISPLAY_8x16(4,3*8,'1');//
OLED_DISPLAY_8x16(6,3*8,asd/1000000+0x30);//
OLED_DISPLAY_8x16(6,4*8,asd%100000/10000+0x30);//
OLED_DISPLAY_8x16(6,5*8,asd%10000/1000+0x30);//
OLED_DISPLAY_8x16(6,6*8,asd%1000/100+0x30);//
OLED_DISPLAY_8x16(6,7*8,asd%100/10+0x30);//
OLED_DISPLAY_8x16(6,8*8,asd%10+0x30);//
delay_s(1); //延时1秒
}
我使用驱动代码,发现我的OLED屏幕黑屏,然后我试了试输出腿脚状态,发现PA0一直高电平,
什么原因?不是上电等变为低电平嘛?还有大佬们,这个HX711不接探头也有数据吧?
我现在数据出不来。。。。
|