stm8s207 调试hx711称重装置,输出结果一直为0,大家帮助看一看哪里有错误;16M晶振不分频 code hx711.c void GPIO_Int(void) { GPIO_DeInit(GPIOB); GPIO_DeInit(GPIOA); GPIO_DeInit(GPIOE); GPIO_Init(GPIOB, GPIO_PIN_2, GPIO_MODE_OUT_PP_LOW_SLOW);//led2 GPIO_Init(GPIOB, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_SLOW);//led3 GPIO_Init(GPIOB, GPIO_PIN_7, GPIO_MODE_IN_PU_NO_IT);//k1 GPIO_Init(GPIOA, GPIO_PIN_6, GPIO_MODE_IN_PU_NO_IT);//k2 GPIO_Init(GPIOG, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST);////HX711_SCK GPIO_Init(GPIOG, GPIO_PIN_1, GPIO_MODE_IN_FL_NO_IT);////DT 上拉输入 GPIO_WriteLow(GPIOE, GPIO_PIN_3); } u32 HX711_Read(void) //增益128 { unsigned long count; unsigned char i; GPIO_WriteLow(GPIOG, GPIO_PIN_0); //sck 0 count=0; while(GPIO_ReadInputPin(GPIOG, GPIO_PIN_1)); for(i=0;i<24;i++) { GPIO_WriteHigh(GPIOG, GPIO_PIN_0); nop(); count=count<<1; GPIO_WriteLow(GPIOG, GPIO_PIN_0); if(GPIO_ReadInputPin(GPIOG, GPIO_PIN_1)) count++; nop(); } GPIO_WriteHigh(GPIOG, GPIO_PIN_0); count=count^0x800000;//第25个脉冲下降沿来时,转换数据 nop(); GPIO_WriteLow(GPIOG, GPIO_PIN_0); return(count); } //**************************************************** //获取毛皮重量 //**************************************************** void Get_Maopi(void) { Weight_Maopi = HX711_Read(); } void Get_Weight(void) { { Weight_Shiwu = HX711_Read(); Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //获取净重 if(Weight_Shiwu >= 0) { Weight_Shiwu = (unsigned long)((float)Weight_Shiwu/GapValue); //计算实物的实际重量 } else { Weight_Shiwu = 0; } } main。c void main(void) { CLK_DeInit(); /*判断时钟源,自动切换到HSE*/ if(CLK_GetSYSCLKSource()!=CLK_SOURCE_HSE) { /*使能自动切换,一直等待到切换成功*/ while(CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE,CLK_CURRENTCLOCKSTATE_ENABLE) ==ERROR); } //User_UART3_Init(); User_UART1_Init(); GPIO_Int(); Weight_Maopi = HX711_Read(); Weight_Maopi = HX711_Read(); Weight_Maopi = HX711_Read(); delays(); Weight_Maopi = HX711_Read(); /* Infinite loop */ while (1) { // Get_Weight(); nop(); nop(); // Weight_Shiwu = HX711_Read(); Get_Weight(); Weight_Shiwu = (unsigned long)((float)Weight_Shiwu/430); printf("净重量 = %d g\r\n",Weight_Shiwu); //printf("净重量 = g\r\n"); delays(); } } |
净重量 = 0 g
净重量 = 0 g
净重量 = 0 g
净重量 = 0 g
净重量 = 0 g
净重量 = 0 g
GPIO_Init(GPIOG, GPIO_PIN_1, GPIO_MODE_IN_PU_NO_IT);
评分
查看全部评分
试过了 结果一样 手册建议浮空输入
那你应该把器件的时序图贴上
解决了
while(1)
{
Get_Weight();
printf("¾»ÖØÁ¿ = %d g\r\n",Weight_Shiwu); //´òÓ¡
delay_ms(1000);
}
}
我是直接复制过来的,因为自己的也printf重定向了,所以一直忽略这个问题。后来参照51的程序慢慢发现的
//Weight_Shiwu = 5000;
WeightShiwu[0] = Weight_Shiwu%10000/1000 + 0x30;
WeightShiwu[1] = Weight_Shiwu%1000/100 + 0x30;
WeightShiwu[2] = Weight_Shiwu%100/10 + 0x30;
WeightShiwu[3] = Weight_Shiwu%10 + 0x30;
WeightShiwu[4] = 'g';
for(i=0;i<5;i++)
{
UART1_SendData8(WeightShiwu[i]);
while(UART1_GetFlagStatus(UART1_FLAG_TXE )==RESET);
nop();
}
评分
查看全部评分