串列埠的三種工作方式
操作串列埠一般有兩種方式:查詢和中斷;stm32還支援第三種dma方式。
(1)查詢:串列埠程式不斷地迴圈查詢標誌,看看當前有沒有資料要它傳送或接收。如果有的話進行相應的寫操作和讀操作進行傳送或接收資料。
(2)中斷:平時串列埠只要開啟中斷即可。如果發現有乙個中斷來,則意味著有資料需要接收(接收中斷)或資料已經傳送完成(傳送中斷)。
(3)dma方式,設定好dma工作方式,由dma來自動接收或傳送資料。
一般來說,查詢方式的效率是比較低的,並且由於stm32的uart硬體上沒有fifo,如果程式功能比較多,查詢不及時的話很容易出現資料丟失的現象, 故實際專案中這種方式用的並不多。
中斷方式的話我們可以分別設定接收中斷和傳送中斷,當串列埠有資料需要接收時才進入中斷程式進行讀讀操,這種方式占用cpu資源比較少,實際專案中比較常用,但需要注意中斷程式不要太複雜使執行時間太長,如果執行時間超過乙個字元的時間的話也會出現資料丟失的現象,這個波特率比較高的串列埠程式設計中比較容易出現,可以考慮用迴圈buf方法,在中斷程式中只負責實時地接收實數數和傳送時的填數(寫傳送暫存器),其它操作放在中斷外處理。
stm32還提供了第三種dma方式用來支援高速地串列埠傳輸。這種方式只要設定好接收和傳送緩衝位置,可以由dma來自動接收和傳送資料,這可以最小化占用cpu時間。
Apache下PHP的幾種工作方式
php在apache中一共有三種工作方式 cgi模式 apache模組dll fastcgi模式 php 在 apache 2中的 cgi模式。編輯apache 配置檔案httpd.conf 如下 php4 版寫法php 在 apache 2中的 模組模式。編輯apache 配置檔案httpd.co...
Apache下PHP的幾種工作方式
php在apache中一共有三種工作方式 cgi模式 apache模組dll fastcgi模式 php 在 apache 2中的 cgi模式。編輯apache 配置檔案httpd.conf 如下 php4 版寫法php 在 apache 2中的 模組模式。編輯apache 配置檔案httpd.co...
工作方式問題
連續幾天的開發培訓終於結束了,明天開始就要實踐了。今天的活動是一團糟。離開公司之前將thunderbird的郵件備份,僅是把原來備份的資料夾複製到預設目錄下,但是卻生成了幾個帶亂碼的收件箱資料夾,非常亂,還不能刪除。後來看了下,是自己把這個資料夾儲存成唯讀的。刪了原來的帳戶,重新新增,結果更是麻煩。...