STM32F103读取原始数据,上位机显示(附上微机和程序源码)

出现的几个问题总结:

1,printf 函数    蛋疼了,刚开始没有注意这个,导致一直输出错误的格式。

                                    printf("%c",0xA5);//输出A5的16进制A5

                                    printf("%f",0xA5);// 输出A5的ASCIC的形式61

附上一些格式:

格式字符 意义
d 以十进制形式输出带符号整数(正数不输出符号)
o 以八进制形式输出无符号整数(不输出前缀0)
x,X 以十六进制形式输出无符号整数(不输出前缀Ox)
u 以十进制形式输出无符号整数
f 以小数形式输出单、双精度实数
e,E 以指数形式输出单、双精度实数
g,G 以%f或%e中较短的输出宽度输出单、双精度实数
c 输出单个字符
s 输出字符串

2  MPU6050 输出数值的理解:



PU6050数据是16位的数。它属于int16类型,即数据范围是-32768 到 32767。 正数范围是0-7FFF(0-32767), 负数范围是(1000-FFFF).

计算机中,负数是以补码的形式来表示的。什么叫补码呢?给大家复习下数学,首先百度下:
1)使用补码的目的:可以将符号位和其它位统一处理;同时,减法也可按加法来处理
2)正数的补码和原码相同
3) 负数的补码等于其符号位不变,数值部分的各位取反,然后整个数加1

那么,当你得到MPU6050的数据的时候,如果是: FFFF,那么代表多少呢?
>>符号位不变,数值部分的各位取反, 变成8000,然后整个数加1,变成8001, 即-1.
如果是: FF00,那么代表多少呢?
>>符号位不变,数值部分的各位取反, 变成80FF,然后整个数加1,变成8100, 即-256.

转自圆点博士:
http://home.eeworld.com.cn/my/space-uid-452397-blogid-112170.html

有的程序直接输出 0-65536 其对应关系以加速度为例是:

0   16384    32767       32768       49152  65536

0g     1g        2g             -2g           -1g         0g  

3,程序输出到上位机上面如图所示:

3STM32F103读取原始数据,上位机显示(附上微机和程序源码)_第1张图片


     

4,本人菜鸟,正在学习中,有问题还请多多交流指正 [email protected],如有侵权立即删除。

上位机软件:http://download.csdn.net/detail/jasondooc/9118865
程序源码http://download.csdn.net/detail/jasondooc/9118877

你可能感兴趣的:(STM32F103读取原始数据,上位机显示(附上微机和程序源码))