STM32
直播中

石利军

7年用户 914经验值
私信 关注
[问答]

stm8s207调试hx711称重装置,输出结果一直为0的原因?

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 grn",Weight_Shiwu);
        //printf("净重量 =  grn");
           delays();

  }

}


回帖(1)

张一珠

2024-4-29 17:30:22
如果外部没有上拉电阻,应改成:
GPIO_Init(GPIOG, GPIO_PIN_1, GPIO_MODE_IN_PU_NO_IT);
举报

更多回帖

发帖
×
20
完善资料,
赚取积分