OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2584|回复: 8

结构体的的问题

[复制链接]

34

主题

178

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2013-11-1
在线时间
183 小时
发表于 2016-1-7 15:37:56 | 显示全部楼层 |阅读模式
10金钱
这是一个结构体
typedef struct {
  i16_t AXIS_X;
  i16_t AXIS_Y;
  i16_t AXIS_Z;
} AxesRaw_t;

*******************************************************************************/
status_t LIS3DH_GetAccAxesRaw(AxesRaw_t* buff) {
  i16_t value;
  u8_t *valueL = (u8_t *)(&value);
  u8_t *valueH = ((u8_t *)(&value)+1);

  if( !LIS3DH_ReadReg(LIS3DH_OUT_X_L, valueL) )
    return MEMS_ERROR;

  if( !LIS3DH_ReadReg(LIS3DH_OUT_X_H, valueH) )
    return MEMS_ERROR;

  buff->AXIS_X = value;

  if( !LIS3DH_ReadReg(LIS3DH_OUT_Y_L, valueL) )
    return MEMS_ERROR;

  if( !LIS3DH_ReadReg(LIS3DH_OUT_Y_H, valueH) )
    return MEMS_ERROR;

  buff->AXIS_Y = value;

  if( !LIS3DH_ReadReg(LIS3DH_OUT_Z_L, valueL) )
    return MEMS_ERROR;

  if( !LIS3DH_ReadReg(LIS3DH_OUT_Z_H, valueH) )
    return MEMS_ERROR;

  buff->AXIS_Z = value;

  return MEMS_SUCCESS;
}

我在main函数里面
response = LIS3DH_GetAccAxesRaw(&data);
                                        if(response==1){
                                                        //print data values
                                                        sprintf((char*)buffer, "X=%6d Y=%6d Z=%6d \r\n", data.AXIS_X, data.AXIS_Y, data.AXIS_Z);
                                                        printf("%s\r\n",buffer);

串口读到了数据。。。。最后想提取 data.AXIS_X, data.AXIS_Y, data.AXIS_Z三个数字,问一下,该怎么做?

最佳答案

查看完整内容[请看2#楼]

问题解决了 i16_t x,y,z再赋值就可以了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

34

主题

178

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2013-11-1
在线时间
183 小时
 楼主| 发表于 2016-1-7 15:37:57 | 显示全部楼层
问题解决了
i16_t x,y,z再赋值就可以了
回复

使用道具 举报

34

主题

178

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2013-11-1
在线时间
183 小时
 楼主| 发表于 2016-1-7 15:40:48 | 显示全部楼层
debug的时候追踪定义的三个定义的变量,显示   not in scope
U8 X,Y,Z;
X=data.AXIS_X;
Y=data.AXIS_Y;
Z=data.AXIS_Z;
回复

使用道具 举报

2

主题

239

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2015-6-5
在线时间
110 小时
发表于 2016-1-7 15:41:53 | 显示全部楼层
你是什麼東西想提取?上位機?
回复

使用道具 举报

34

主题

178

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2013-11-1
在线时间
183 小时
 楼主| 发表于 2016-1-7 15:44:25 | 显示全部楼层
Rocks 发表于 2016-1-7 15:41
你是什麼東西想提取?上位機?

上位机已经提取到了数据,现在想提取data.AXIS_X, data.AXIS_Y, data.AXIS_Z显示在屏幕上
回复

使用道具 举报

34

主题

178

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2013-11-1
在线时间
183 小时
 楼主| 发表于 2016-1-7 15:44:47 | 显示全部楼层
在线等。。
回复

使用道具 举报

34

主题

178

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2013-11-1
在线时间
183 小时
 楼主| 发表于 2016-1-7 15:46:14 | 显示全部楼层
Rocks 发表于 2016-1-7 15:41
你是什麼東西想提取?上位機?

我定义了三个变量U8 X,Y,Z;然后
X=data.AXIS_X;
Y=data.AXIS_Y;
Z=data.AXIS_Z;
debug追踪的时候,XYZ是not in scope
回复

使用道具 举报

2

主题

239

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2015-6-5
在线时间
110 小时
发表于 2016-1-7 15:56:38 | 显示全部楼层
名扬天下 发表于 2016-1-7 15:46
我定义了三个变量U8 X,Y,Z;然后
X=data.AXIS_X;
Y=data.AXIS_Y;

你除了給XYZ賦值之外有做什麼操作嗎?
優化等級調夠高 他會當你這是無意義的變數 直接優化掉

另外單位也不對 U8 跟 i16_t?

沒特別用途 也不用特意去轉給別的變數用
直接調用data.AXIS_X就好了
回复

使用道具 举报

34

主题

178

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2013-11-1
在线时间
183 小时
 楼主| 发表于 2016-1-7 16:19:43 | 显示全部楼层
Rocks 发表于 2016-1-7 15:56
你除了給XYZ賦值之外有做什麼操作嗎?
優化等級調夠高 他會當你這是無意義的變數 直接優化掉

我就是想把data.AXIS_X, data.AXIS_Y, data.AXIS_Z显示在液晶上。
难道buffer[0]=(data.AXIS_X)/1……可以?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 23:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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