wscjun 发表于 2013-5-18 01:17:58

MPU6050 DMP移植 语法求教

1.楼主最近在将MPU6050的DMP部分代码移植到stm32中(IDE:uVision4.10),出现以下错误提示:
struct int_param_s {
#if defined EMPL_TARGET_MSP430 || defined MOTION_DRIVER_TARGET_MSP430
    void (*cb)(void);
    unsigned short pin;
    unsigned char lp_exit;
    unsigned char active_low;
#elif defined EMPL_TARGET_UC3L0
    unsigned long pin;
    void (*cb)(volatile void*);
    void *arg;
#endif
}; 错误指向此行
error:#169: expected a declaration
2.还有记得前年天有网友问过以下问题
static struct dmp_s dmp = {
   .tap_cb = NULL,
   .android_orient_cb = NULL,
   .orient = 0,
   .feature_mask = 0,
   .fifo_rate = 0,
   .packet_length = 0,
};
error:#29: expected an expression

想请问一下大家怎么会出现这样的问题,是我的编译环境没有正确设置吗,还是其他什么原因。先谢谢大家了。

nazily215 发表于 2013-5-18 01:53:42

因为你两个#if #elif都没中,相当于
typedef struct xxx=
{
};

这是不允许的

wscjun 发表于 2013-5-18 02:09:30

nazily215 发表于 2013-5-18 01:53 static/image/common/back.gif
因为你两个#if #elif都没中,相当于
typedef struct xxx=
{


非常感谢你的回答,的确是因为两个条件编译都没有中的原因。谢谢你。
另外还想请教一下第二个问题是怎么回事。

tianxingweichen 发表于 2013-5-18 09:45:54

请教一下,DMP是什么意思

wscjun 发表于 2013-5-18 10:44:52

就是Digital Motion Processor,MPU6050里面的一个模块,可以对原始的加速度计和陀螺仪的数据进行融合之后输出。就不需要用户进行融合了,可以减轻主控芯片的负担。详细的资料你可以到invensense官方网站找找看。或者这两片帖子里面都有提到,你可以参考http://www.amobbs.com/thread-5528472-1-1.html
http://www.amobbs.com/forum.php?mod=viewthread&tid=5533516&pid=6669251&page=1&extra=page%3D1#pid6669251

lotsbiss 发表于 2013-5-18 10:57:14

我看了下我自己的代码static struct dmp_s dmp = {
    /*.tap_cb = */NULL,
    /*.android_orient_cb =*/ NULL,
    /*.orient =*/ 0,
    /*.feature_mask = */0,
    /*.fifo_rate = */0,
    /*.packet_length =*/ 0
};
/*
struct int_param_s {
#if defined EMPL_TARGET_MSP430 || defined MOTION_DRIVER_TARGET_MSP430
    void (*cb)(void);
    unsigned short pin;
    unsigned char lp_exit;
    unsigned char active_low;
#elif defined EMPL_TARGET_UC3L0
    unsigned long pin;
    void (*cb)(volatile void*);
    void *arg;
#endif
};*/

nazily215 发表于 2013-5-18 11:42:44

wscjun 发表于 2013-5-18 02:09 static/image/common/back.gif
非常感谢你的回答,的确是因为两个条件编译都没有中的原因。谢谢你。
另外还想请教一下第二个问题是怎么 ...

第二个简单啦,表示当前编译器不支持这种定义法,我知道GCC支持这种,

struct xxx={
.xx0=y0,
.xx1=y1,
};

改成
struct xxx={
xx0;
xx1;
};

struct xxx x0={x0, x1};

wscjun 发表于 2013-5-18 12:28:50

nazily215 发表于 2013-5-18 11:42 static/image/common/back.gif
第二个简单啦,表示当前编译器不支持这种定义法,我知道GCC支持这种,

struct xxx={


嗯 非常感谢你的回答 我再看看

wscjun 发表于 2013-5-18 12:30:06

lotsbiss 发表于 2013-5-18 10:57 static/image/common/back.gif
我看了下我自己的代码

嗯 看了一下 基本明白了 谢谢你

mcu1234mcu 发表于 2013-5-18 22:20:12

7楼说的对,这就是gun.c和标准C的区别

wscjun 发表于 2013-5-18 22:22:48

mcu1234mcu 发表于 2013-5-18 22:20 static/image/common/back.gif
7楼说的对,这就是gun.c和标准C的区别

非常感谢你的回答。

mcu1234mcu 发表于 2013-5-18 22:23:49

wscjun 发表于 2013-5-18 22:22 static/image/common/back.gif
非常感谢你的回答。

我也正在移植这个东西,编译已经能通过了,但是还没有调通,可以交流。

wscjun 发表于 2013-5-18 22:26:18

嗯 能加一下QQ吗 1035411735

wscjun 发表于 2013-5-18 22:27:04

mcu1234mcu 发表于 2013-5-18 22:23 static/image/common/back.gif
我也正在移植这个东西,编译已经能通过了,但是还没有调通,可以交流。 ...

嗯 能加一下QQ吗 1035411735

viper65 发表于 2013-11-17 02:07:10

共同学习下 最近也在研究这个呢

智波景严 发表于 2014-2-27 18:40:39

学习了!!
页: [1]
查看完整版本: MPU6050 DMP移植 语法求教