ADXRS450速率读取问题

你好,我用STM32F103单片机读取ADXRS450的角度信息时遇到了一些问题。目前,我可以正确读出陀螺仪的PID和温度值,但在读取速率时静止状态陀螺仪返回值为0X4E08B460左右,参照SPI格式,得到返回的数据为0X45E3,除以80后转换为角速度为222.83°/s,数据明显存在问题。但当我转动陀螺仪时数据也会发生变化,所以应该是我数据处理上出现了错误,但是我未能找到错误,还请帮忙解答,谢谢!

float GetGyroYaw(float IMU_T)
{
  short res=0;
  u32 R_buf=0;
  float w=0;
  static float yaw;

  Send_450_Command(0x00,0x00,READ); //发送读取寄存器命令,形参分别为寄存器地址,发送数据,读/写
  R_buf=Read_450_D_C(); //读取寄存器返回值
  printf("R_buf is %x!\r\n",R_buf);//串口打印
  res=(short)(R_buf>>5);
  printf("res2 is %x!\r\n",res);
  if(res<0) //补码转原码
  {
    res =~res+1;
    res |= 0x8000;
  }
  w=(float)res/80; //转为角速度
  yaw+=w*IMU_T; //计算角度
  printf("w is %f, yaw is %f!\r\n",w,yaw);

  return yaw;
}