搜索
bottom↓
回复: 15

MPU6050 DMP移植 语法求教

[复制链接]

出0入0汤圆

发表于 2013-5-18 01:17:58 | 显示全部楼层 |阅读模式
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

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

出0入0汤圆

发表于 2013-5-18 01:53:42 | 显示全部楼层
因为你两个#if #elif都没中,相当于
typedef struct xxx=
{
};

这是不允许的

出0入0汤圆

 楼主| 发表于 2013-5-18 02:09:30 | 显示全部楼层
nazily215 发表于 2013-5-18 01:53
因为你两个#if #elif都没中,相当于
typedef struct xxx=
{

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

出0入0汤圆

发表于 2013-5-18 09:45:54 | 显示全部楼层
请教一下,DMP是什么意思

出0入0汤圆

 楼主| 发表于 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? ... page%3D1#pid6669251

出0入0汤圆

发表于 2013-5-18 10:57:14 | 显示全部楼层
我看了下我自己的代码
  1. static struct dmp_s dmp = {
  2.     /*.tap_cb = */NULL,
  3.     /*.android_orient_cb =*/ NULL,
  4.     /*.orient =*/ 0,
  5.     /*.feature_mask = */0,
  6.     /*.fifo_rate = */0,
  7.     /*.packet_length =*/ 0
  8. };
复制代码

  1. /*
  2. struct int_param_s {
  3. #if defined EMPL_TARGET_MSP430 || defined MOTION_DRIVER_TARGET_MSP430
  4.     void (*cb)(void);
  5.     unsigned short pin;
  6.     unsigned char lp_exit;
  7.     unsigned char active_low;
  8. #elif defined EMPL_TARGET_UC3L0
  9.     unsigned long pin;
  10.     void (*cb)(volatile void*);
  11.     void *arg;
  12. #endif
  13. };*/
复制代码

出0入0汤圆

发表于 2013-5-18 11:42:44 | 显示全部楼层
wscjun 发表于 2013-5-18 02:09
非常感谢你的回答,的确是因为两个条件编译都没有中的原因。谢谢你。
另外还想请教一下第二个问题是怎么 ...

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

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

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

struct xxx x0={x0, x1};

出0入0汤圆

 楼主| 发表于 2013-5-18 12:28:50 | 显示全部楼层
nazily215 发表于 2013-5-18 11:42
第二个简单啦,表示当前编译器不支持这种定义法,我知道GCC支持这种,

struct xxx={

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

出0入0汤圆

 楼主| 发表于 2013-5-18 12:30:06 | 显示全部楼层
lotsbiss 发表于 2013-5-18 10:57
我看了下我自己的代码

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

出0入4汤圆

发表于 2013-5-18 22:20:12 | 显示全部楼层
7楼说的对,这就是gun.c和标准C的区别

出0入0汤圆

 楼主| 发表于 2013-5-18 22:22:48 | 显示全部楼层
mcu1234mcu 发表于 2013-5-18 22:20
7楼说的对,这就是gun.c和标准C的区别

非常感谢你的回答。

出0入4汤圆

发表于 2013-5-18 22:23:49 | 显示全部楼层
wscjun 发表于 2013-5-18 22:22
非常感谢你的回答。

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

出0入0汤圆

 楼主| 发表于 2013-5-18 22:26:18 | 显示全部楼层
嗯 能加一下QQ吗 1035411735

出0入0汤圆

 楼主| 发表于 2013-5-18 22:27:04 | 显示全部楼层
mcu1234mcu 发表于 2013-5-18 22:23
我也正在移植这个东西,编译已经能通过了,但是还没有调通,可以交流。 ...

嗯 能加一下QQ吗 1035411735

出0入0汤圆

发表于 2013-11-17 02:07:10 | 显示全部楼层
共同学习下 最近也在研究这个呢

出0入0汤圆

发表于 2014-2-27 18:40:39 | 显示全部楼层
学习了!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2022-5-24 01:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表