stm32程序问题

本人最近使用stm32f103rc写了一个检测数据的程序,使用12864OLED屏显示检测到的数值,按理说检测到的数据应该是实时显示的,但是偶尔会出现检测到的数值为最大值状态,改变其他的外界变量数值都不会变化,直到手动复位数值才会重新变化。
  while (1)
  {	
		Init_HMC5883();	 //初始化

		for(i=0;i<6;i++)
		{
			BUF[i] = Single_Read_HMC5883(i+3);//将寄存器值放到BUF里面
			delay_us(500);
		}

		x = BUF[0];x1 = BUF[1];
		y = BUF[4];z1 = BUF[5];
		z = BUF[2];y1 = BUF[3];
				
		xyzdisplay();	//x\y\z的oled显示程序
		if((BUF[0]!=Xvalue)&(BUF[2]!=Yvalue)&BUF[4]!=Zvalue)//	if((BUF[0]<0xfe)&(BUF[2]==0x00)&BUF[4]>0x03)
		{
			delay_us(500);
			BUF[0] = Single_Read_HMC5883(3);
			BUF[2] = Single_Read_HMC5883(5);
			BUF[4] = Single_Read_HMC5883(7);
			if((BUF[0]!=Xvalue)&(BUF[2]!=Yvalue)&BUF[4]!=Zvalue)
			{
				k=~k;
				printf("¾¯¸æ%d\r\n",k);            //±¨¾¯Í£³µ00
				GPIO_SetBits(LED1_PORT,LED1_PIN);
				delay_us(10000);
				calibration_mode();                              
			}
			else
			{
			printf("xxxxxxxxxxxxxxxxxx\r\n");
			GPIO_ResetBits(LED1_PORT,LED1_PIN);
			}
		}
		else
			{
			printf("xxxxxxxxxxxxxxxxxx\r\n");
			GPIO_ResetBits(LED1_PORT,LED1_PIN);
			}
		delay_us(50000);
  }
}

你可能感兴趣的:(problem,stm32)