STM32單片機串口按照自己設定的協議發送一楨資料,代碼應該怎么寫,包括楨頭楨位,資料位,校驗位,停止位。比如這個:
假設楨頭為0xFFFF,無奇偶校驗位,一位停止位,楨尾為0xFFFE,該怎么設計代碼?跪求解答,迷惑我兩天了
uj5u.com熱心網友回復:
對了,還要有資料長度uj5u.com熱心網友回復:
你把上層協議和底層協議弄混了,底層協議才有奇偶校驗、停止位啥的,上層協議是你說的幀頭、幀尾。你要實作上層協議,把底層協議設定好之后,直接依次發送你的協議內容就行了。uj5u.com熱心網友回復:
也就是說如果我只發送的話,直接發資料就行了,不用發楨頭楨尾?uj5u.com熱心網友回復:
幀頭幀尾是一個抽象概念,是主觀定義的,說的是比如你發了:0xAA 0xBB 0x58 0x45 0x30,你可以說0xAA是幀頭,也可以說0xAA 0xBB是幀頭,是你自己主觀定義的。uj5u.com熱心網友回復:
你把這個協議定義好了,只需要依次把這些資料發出去就行了。uj5u.com熱心網友回復:
每一幀資料都要把幀頭楨尾帶上嗎?uj5u.com熱心網友回復:
你如果不想用,也可以不用,前提是你的協議也是很完善的。我說一下幀頭幀尾的作用,你就知道了。協議的作用:是通信的雙方,互相支持的東西,注意是雙方都要同時承認并支持。既然是雙方,必然有發送方和接收方。對于發送方來說,沒有任何限制,只需要依次發送,所以沒有問題,但是對于接收方,由于串口是異步通信,資料啥時候來,接收方不知道;資料啥時候開始,接收方也不知道等等。所以抽象了協議這個概念,我們主觀定義了,幀頭,讓接收方確定了資料的開始;定義了幀尾,讓接收方確定了資料的結束,等等目的。其實協議基本可以說就是為了接收方,而出現的一個產物。uj5u.com熱心網友回復:
你如果不想用,也可以不用,前提是你的協議也是很完善的。我說一下幀頭幀尾的作用,你就知道了。協議的作用:是通信的雙方,互相支持的東西,注意是雙方都要同時承認并支持。既然是雙方,必然有發送方和接收方。對于發送方來說,沒有任何限制,只需要依次發送,所以沒有問題,但是對于接收方,由于串口是異步通信,資料啥時候來,接收方不知道;資料啥時候開始,接收方也不知道等等。所以抽象了協議這個概念,我們主觀定義了,幀頭,讓接收方確定了資料的開始;定義了幀尾,讓接收方確定了資料的結束,等等目的。其實協議基本可以說就是為了接收方,而出現的一個產物。
uj5u.com熱心網友回復:
沒有,以上說的是上層協議。底層協議,我建議你看看這個:https://wenku.baidu.com/view/40083cf3284ac850ac024224.html,然后把底層和上層聯系起來看看,好好弄清楚。uj5u.com熱心網友回復:
沒有,以上說的是上層協議。底層協議,我建議你看看這個:https://wenku.baidu.com/view/40083cf3284ac850ac024224.html,然后把底層和上層聯系起來看看,好好弄清楚。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/100110.html
標籤:單片機/工控
上一篇:AD19中如何設定捕捉點?
下一篇:hc06模塊和Arduino小車
