您好!咨询你个问题,
unsigned int x,y,z;
double angle;
I2C_Start();
LCD_Start();
Init_HMC5883();
while(1)
{
Multiple_read_HMC5883(); //连续读出数据,存储在BUF中
x=BUF[0] << 8 | BUF[1]; //Combine MSB and LSB of X Data output register
z=BUF[2] << 8 | BUF[3]; //Combine MSB and LSB of Z Data output register
y=BUF[4] << 8 | BUF[5]; //Combine MSB and LSB of Y Data output register
angle=atan2((double)y,(double)x) * (180 / 3.14159265)+180; // angle in degrees
angle*=10;
Display(angle); //计算数据和显示
}
这个数学计算在单片机上计算正确,在PSoC3上总是计算错误,是什么原因呢??希望得到您的帮助,谢谢您啦!