iT邦幫忙

0

Uart接收資料問題

  • 分享至 

  • xImage

我想透過UART持續接收感測器端的資料,長度固定,資料結尾為FF FF FF FF;目前我的作法,僅透過資料串列是否有連續四個FF來判斷資料結尾。但這種作法並不完善,請問題是否能給我一些修改的建議方向?如下是我目前主要的程式碼。

void HAL_UART_RxCpltCallback(UART_HandleTypeDef*UartHandle)
{

		RxLine++;                      //每接收到一个数据,进入回调数据长度加1
	    DataBuff[RxLine-1]=RxBuff[0];  //把每次接收到的数据保存到缓存数组



	    if(DataBuff[RxLine-1]==0xff && DataBuff[RxLine-2]==0xff && DataBuff[RxLine-3]==0xff && DataBuff[RxLine-4]==0xff)            //以連續四個FF當作資料結尾的判斷
	    {
	        //printf("RXLen=%d\r\n",RxLine);
	        for(int i=0;i<RxLine;i++)
	        {
	        	printf("UART DataBuff[%d] = 0x%x\r\n",i,DataBuff[i]);
	        }
	        memset(DataBuff,0,sizeof(DataBuff));  //清空缓存数组
	        RxLine=0;  //清空接收长度
	    }


	    RxBuff[0]=0;
	    HAL_UART_Receive_IT(&huart3, (uint8_t *)RxBuff, 1); //每接收一个数据,就打开一次串口中断接收
}
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
souda
iT邦高手 1 級 ‧ 2022-07-18 15:42:52

如果需要持續接收資料建議您可以參考I2C來做也比較有擴充性.

我要發表回答

立即登入回答