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();
}
}
2024-4-29 17:30:22
如果外部没有上拉电阻,应改成:
GPIO_Init(GPIOG, GPIO_PIN_1, GPIO_MODE_IN_PU_NO_IT);
如果外部没有上拉电阻,应改成:
GPIO_Init(GPIOG, GPIO_PIN_1, GPIO_MODE_IN_PU_NO_IT);
举报