typedef struct{
uint8_t Header;
uint8_t Id;
uint8_t Cid;
uint8_t Len;
uint8_t Data[10];
uint8_t Chk;
uint8_t Tail;
}CmdFrameStr;
CmdFrameStr SendFrameCmd;
void FrameCmdPackage() //命令打包
{
uint8_t i = 0;
uint8_t *pData; //定义指针变量
SendFrameCmd.Cid = RcvFrameCmd.Cid;
SendFrameCmd.Chk = SendFrameCmd.Id + SendFrameCmd.Cid + SendFrameCmd.Len;
for(i=0; i<SendFrameCmd.Len; i++)
{
SendFrameCmd.Chk += SendFrameCmd.Data[i];
}
//方法一:
pData = (uint8_t *)&SendFrameCmd; //将结构体的地址强制转换为uint8_t类型的指针,并将其赋值给指针变量(这里的结构体都是uint8_t类型)
Usart1_TxBuf[0] = *pData++; //通过对指针变量的操作得到结构体的成员值
Usart1_TxBuf[1] = *pData++;
Usart1_TxBuf[2] = *pData++;
Usart1_TxBuf[3] = *pData++;
Usart1_TxBuf[4] = *pData++;
//方法二:
CmdFrameStr *tempData; //定义结构体指针
tempData = &SendFrameCmd; //指针指向结构体地址
Usart1_TxBuf[0] = temp->Header; //操作指针得到结构体的成员变量值
//方法三:
Usart1_TxBuf[0] = SendFrameCmd.Header //直接操作结构体
}
原文:https://www.cnblogs.com/lian-meng/p/11095346.html