1. 程式人生 > >教你如何使用stm32傳送一幀資料(結構體中的資料)

教你如何使用stm32傳送一幀資料(結構體中的資料)

在這篇文章中我介紹一下如何通過串列埠傳送一幀存在結構體中的資料。通過串列埠接受一幀資料請參考的我部落格中的文章——教你如何使用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);