無串列埠空閒中斷微控制器串列埠接收未知長度位元組方法

2021-09-03 01:55:00 字數 490 閱讀 9057

之前寫過一篇stm32串列埠dma收發未知長度的博文。這次說一下如何在沒有空閒中斷的情況下實現未知長度的讀取。

思路:在串列埠接收的時候,例串列埠設定:9600波特率、8個資料位、1個停止位、無校驗。9600波特率表示,每秒傳輸9600個位,即每秒傳輸9600/(8位資料位+1位停止)=1066位元組,那麼每秒傳輸乙個位元組的時間就是:1/1066=9.38*10^-4s≈0.94ms;考慮硬體的損耗,保證資料傳輸的可靠性,留出餘量,假設乙個位元組的傳輸時間為2ms。

那麼我們就可以配置定時器,通過對時間的判斷識別接收一幀未知長度的串列埠資料,以定時2ms來說,當接收到乙個位元組的時候,我們開啟定時器,開始計時,定時週期2ms。

如果過了2ms,沒有新資料,那麼我們認為一幀資料接收完成。如果在2ms這個時間內

,有新資料到來,那麼我們認為是同一幀資料,此時定時器計數清零,重新計數。

初始化定義:乙個足夠大陣列和乙個記錄位元組數的變數。

微控制器自定義串列埠空閒中斷的方法!

好久沒有發布部落格了,今天遇到個問題,串列埠接受不定長沒有空閒中斷如何處理?說下自己的方法,如果有異議還望告知謝謝!1 在串列埠終端中加入全域性變數,進入串列埠中斷賦值。void interrupt uart void uart rxdealy 3 串列埠接收延時 cnt 陣列下標 buff cnt...

51微控制器 串列埠中斷

在應用層方面,也就是我們把串列埠中斷用起來目前只需掌握以下幾點 中斷源 就是中斷的 如定時中斷,串列埠中斷 包括傳送完成,接受完成等 dma中斷,按鍵中斷,io口輸入高低電平等等都可以當做中斷的 中斷服務函式 就是有乙個中斷來了,這個中斷具體要做什麼。比如串列埠收到1幀資料,需要用變數把資料存起來,...

微控制器串列埠配置

串列埠引數配置 usart initstructure.usart baudrate 115200 設定波特率為115200 usart initstructure.usart wordlength usart wordlength 8b 設定資料位為8位 usart initstructure.u...