HEX数据包
固定包长,包含包头包尾
通过判断第一个数据是否为包头,如果是的话,开始接收数据。接收固定个数的数据后开始读取包尾,若包尾读取成功,则数据传输完成。
读取固定个数的数据的好处就是,如果数据中含有与包头包尾一样的数据,也会读取,并不会产生影响。
如果数据不会与包头包尾重复,可以选择不固定数据长度,采用可变包长。
代码实例
Serial GetRXFlag用于数据接收完成的标志,置1代表数据接收完成。
uint8_t Serial_GetRxFlag(void)
{
if(Serial_RxFlag==1)
{
Serial_RxFlag=0;
return 1;
}
return 0;
}
void USART1_IRQHandler(void)
{
static uint8_t pRxPacket=0; //已接收数据个数
static uint8_t RxState=0; //接收状态位,状态0位检测包头,状态1位接收数据,状态2位检测包尾
if(USART_GetITStatus(USART1 ,USART_IT_RXNE )==SET )
{
uint8_t RxData=USART_ReceiveData (USART1 );
if(RxState==0)