在这篇文章中我介绍一下如何通过串口发送一帧存在结构体中的数据。通过串口接受一帧数据请参考的我博客中的文章——教你如何使用stm32接收一帧数据!
一:在.h首先定义一个结构体。
typedef struct
{
uint8_t H1;
uint8_t F1;
uint8_t A[7];
uint8_t AN;
uint8_t L;
uint8_t NU[3];
uint8_t Mode;
uint8_t ExOut_Temp[2];
uint8_t NowIn_Temp[2];
uint8_t NowOut_Temp[2];
uint8_t Ex_Open[2];
uint8_t Now_Open[2];
uint8_t Ex_PRESSSUB[2];
uint8_t Now_PRESSSUB[2];
uint8_t RTC_Time[7];
uint8_t ST;
uint8_t CS;
uint8_t End;
}__attribute__ ((packed)) Read_Back;
二:在.c文件中先调用结构体。
Read_Back read_back;
Read_Back *Read_back=&read_back;
三:自定义发送函数。
void Read_Ack(Read_Back *p,u8 len) //形参1为结构体的首地址 &read_back 形参2 为发送帧的长度
{
static u8 date,i;
for(i=0;i<len;i++)
{
date= * (((u8*) &p->H1)+i); //每次循环将指针指向结构体中的下一个数据
USART_SendData(USART3,date); //通过串口3发送数据
while( USART_GetFlagStatus(USART3,USART_FLAG_TC)!= SET); //等待发送完成
}
}
四:调用自定义函数发送结构体数据。
Read_Ack(&read_back,len);