中级会员
 
- 积分
- 264
- 金钱
- 264
- 注册时间
- 2019-3-26
- 在线时间
- 105 小时
|
10金钱
结构体中定义了一个指针如下:
struct _Usart_Dat
{
uint8_t Header[2];
uint8_t *Dat;
uint8_t PkgEnd[2];
};
extern struct _Usart_Dat Usart_Dat;
当串口收到数据后,把串口的数据赋值给这个指针所指向的地址:
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
Usart_Dat.Dat=malloc(len);
memcpy(&Usart_Dat.Dat[0],&USART_RX_BUF[0],len);
然后发送这个指针中的数据,可以正常显示,比如串口收到了AABB,它就发送了AABB
USART_SendData_String(USART1,(uint8_t *)&Usart_Dat.Dat,len);
free(Usart_Dat.Dat);
但是如果发送整个结构体,在该显示数据的地方,显示的却是这个指针的地址,比如应该显示AABB,但显示的却是00 00 48 00...(后面记不清了),仿真看了一下,发送的是它的地址而不是指向的数据。
USART_SendData_String(USART1,(uint8_t *)&Usart_Dat,len+4);
free(Usart_Dat.Dat);
|
|