遇到问题:利用串口打印时,数据丢失?
在版主passoni的DMP移植程序里添加了读取横滚角、航向角和温度值,并用串口打印出来。
结果如下:如下所示,打印几次数据就会出现其中一次俯仰角、横滚角、航向角数据丢失,只打印出温度值?
10.474207
-1.122749
-29.808819
39.924118
10.473424
-1.123999
-29.808847
39.921177
10.472758
-1.126969
-29.809134
39.894707
39.903530
10.438786
-1.190631
-29.821899
39.900589
主程序的while(1)改为
while(1)
{
Read_DMP();
Read_Temperature();
printf("\r\n\r\n\r\n\r\n");
}
在void Read_DMP(void)里添加读取横滚角、航向角并打印出来的程序
//计算得到俯仰角/横滚角/航向角
Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; //俯仰角
Roll = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // 横滚角
Yaw = atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3) * 57.3; //航向角
printf("%f\r\n %f\r\n %f\r\n",Pitch,Roll,Yaw);
在int Read_Temperature(void)修改读取温度的公式并打印出来。
Temp=36.53+Temp/340;
//Temp=(36.53+Temp/340)*10;
printf("%f\r\n",Temp);
return (int)Temp;