STM32 學習日記(一)通訊協議

通信協議

1.通訊協議是什麼?
簡單來講就是暗號。
可以說是一個單片機向另外一個單片機,用串口發送信息時要加暗號,暗號對,自己人。暗號錯,拒絕並警惕。
2.通訊協議的內容是什麼?
簡答來說是數據。
1.普通協議,適合自主開發
數據包含 數據包開始標誌+數據長度+任務號+執行數據+校驗和+數據包結束標誌
上代碼:

if(USART3_RX_STA&0x8000)
		{	
	    len=USART3_RX_STA&0x3fff;
			USART3_RX_STA=0;
			if(USART3_RX_BUF[0]==0x0a&&USART3_RX_BUF[len-1]==0x08)
			{
				if(USART3_RX_BUF[1]==len)
				{
					check=0;
					for(i=1;i<len-2;i++)
				{ 
				 check=check+USART3_RX_BUF[i];
				
				}
				if(check==USART3_RX_BUF[len-2])
				{
					switch(USART3_RX_BUF[2])
					{
						case 0x01:
							if(USART3_RX_BUF[3]==0x01)
							{
						     
							}
							USART_SendData(USART3,0x16);
						 break;
						case 0x02:
						    a=USART3_RX_BUF[3];b=USART3_RX_BUF[4];
						    USART_SendData(USART3,0x16);
						 break;
						default:
							USART_SendData(USART3,0x15);
							break;
					}
				}else USART_SendData(USART3,0x15);
				}else USART_SendData(USART3,0x15);
			}else USART_SendData(USART3,0x15);
		}
		
     
		//////////////////////////////////////////////////////////////////////

測試 0a 07 01 02 02 0c 08 0d 0a
註釋看圖吧,複製過來亂碼了
在這裏插入圖片描述
在這裏插入圖片描述
注意的是:一定要避免通訊卡死(通訊堵塞),兩個辦法,一是一問一答法,二是任務超時法。
一問一答:正確回覆0x16,錯誤回覆0x15,保證能連續不斷的大量數據傳輸。
任務超時:計算最大的數據傳輸時間爲界限,防止卡通訊。
STM32F1通信協議代碼,希望各位支持一下
STM32F4通信協議代碼,希望各位支持一下
程序是一樣的,我沒有f7的開發板,如果有需要的,我就弄個f7的。
2.MOTERCTR協議,適合互聯網開發
其實MOTERCTR協議就是CRC校驗,就是一堆數據最後兩位爲CRC檢驗。
如圖:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
接收一堆數據,計數它的高8位和底8位這兩個校驗位是否正確·,正確自己人,錯誤拒絕並警惕。
STM32F7課程學習的程序代碼,來自老師手筆
若有需求,私信我,我就更改爲F1或F4的程序。

通訊協議不僅僅是個協議,更是程序的生命,協議一定要複雜點,那麼別人就不能輕易破壞你的產品,現在流行手機當作上位機,大家有興趣,就下載我弄的app源碼,修改成您的專屬產品
WIFI調試代碼,可自己嘗試開發

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章