OpenEdv-开源电子网

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

想通过定义共用体将结构体发送出去,如何解决对齐问题?

[复制链接]

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-2-7
在线时间
3 小时
发表于 2015-2-7 15:31:25 | 显示全部楼层 |阅读模式
5金钱
typedef struct //定义帧结构体
{
  uint8_t  FrameHead_1;
  uint8_t  FrameHead_2;
  uint8_t  FrameID;
  uint8_t  FrameCount;
  int16_t  AngleInt1;
  int16_t  AngleInt2;
  uint8_t  StatusWord;
  int16_t  Rsv;
  uint8_t  TxCheckSum;
} StructTxFrame;

typedef union       //定义帧共用体
{
  StructTxFrame TxFrame;
  uint8_t TxBuffer[16];
} UnionTxFrame ;

UnionTxFrame UniTxFrame;

我想通过给TxFrame赋值,然后讲数组TxBuffer[16]里的数据通过串口发送出去,但是结构体有内存对齐的问题,所以会有不需要的数会传出去,如何解决呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2015-2-7 16:40:37 | 显示全部楼层
直接用成员名赋值就不会有问题,用指针比较麻烦
博观而约取,厚积而薄发。
回复

使用道具 举报

2

主题

1446

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2256
金钱
2256
注册时间
2010-12-16
在线时间
206 小时
发表于 2015-2-7 18:39:42 | 显示全部楼层
找一下

#pragma pack
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1839
金钱
1839
注册时间
2014-6-27
在线时间
982 小时
发表于 2015-2-7 20:55:47 | 显示全部楼层
你的结构体定义顺序安排一下,直接就这样就可以用了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 00:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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