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);
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值