unsigned long HX711_Read(void) //增益128
{
unsigned long val = 0;
unsigned int i = 0;
//判断模块是否准备好
while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7));
SysTick_Delay_us(1);
//sck 拉低
GPIO_ResetBits(GPIOA,GPIO_Pin_5);
SysTick_Delay_us(1);
//再次判断是否准备好
while(!GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7));
for(i=0;i<24;i++)
{
SysTick_Delay_us(250);
GPIO_SetBits(GPIOA,GPIO_Pin_5);
val=val<<1;
SysTick_Delay_us(1);
GPIO_ResetBits(GPIOA,GPIO_Pin_5);
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7))
{val++;
SysTick_Delay_us(1);
}
}
GPIO_SetBits(GPIOA,GPIO_Pin_5);
val = val^0x800000;
SysTick_Delay_us(1);
GPIO_ResetBits(GPIOA,GPIO_Pin_5);
SysTick_Delay_us(1);
return val;
}
这段程序中,置位和复位键的功能为什么用那两个口,还有 val = val^0x800000; 是什么意思。 |