请教:STM8 cosmic中如何使用long long 或者int64的变量?

2020-01-07 19:26发布

小弟想在STM8上调用MPU6050的DMP库,但库里面有long long 格式的64位变量,貌似cosmic不认,请教大家是否有解决的办法?
16条回答
goodjob2
1楼 · 2020-01-09 05:19.采纳回答
换用IAR后问题解决了。cosmic不支持long long 格式,而且long 和 float之间的换算有问题
worldsing
2楼-- · 2020-01-07 22:23
long long 是8个字节

http://www.cnblogs.com/worldsing/p/3220186.html



这个图片是IAR下的,不过都是STM8的cpu
cshp138
3楼-- · 2020-01-07 23:34
 精彩回答 2  元偷偷看……
zhangshixing
4楼-- · 2020-01-08 03:19
好像不支持吧,很多c99都不支持啊
gyzzg2030
5楼-- · 2020-01-08 06:57
32位处理MPU6050足够了啊,为什么要64位?
goodjob2
6楼-- · 2020-01-08 10:29
cshp138 发表于 2013-7-29 09:22
我也是用stm8搞DMP库,里面可以选择#define EMPL_NO_64BIT,变成32位长度了。现在搞到输出四元素,但是数值 ...

我使用了#define EMPL_NO_64BIT也是输出数值不对,个人猜测是以下两个地方可能有问题:
1、   inv_mpu_dmp_motion_driver.c 下有个int dmp_set_accel_bias(long *bias),这个函数中有个long long accel_sf;此变量定义了no 64bit依然会要用到。
2、   在计算中经常要除以1073741824.0f,这个数可能是数值太大造成计算错误。我把得到的四元数结果除此数经常发生复位,不知道是为什么。
在STM32上已经调通了,DMP效果很棒
goodjob2
7楼-- · 2020-01-08 15:15
本帖最后由 goodjob2 于 2013-7-29 10:50 编辑
gyzzg2030 发表于 2013-7-29 09:33
32位处理MPU6050足够了啊,为什么要64位?


是官方库里面源程序是这样的。不行的话只有自己想办法改了。另外STM8是8位的

一周热门 更多>