日本久久久久曰精品免费,国产精品一级二级三级,乱子伦av无码中文字幕s,国产成人精品一区免费视频

技術熱線: 4007-888-234

單片機與嵌入式系統中的并發和中斷

更新時間: 2019-10-18
閱讀量:3281

在本文中,我們將介紹并發的概念以及許多單片機提供的用于處理并發的機制,專業術語稱為“中斷”。下面我們將介紹這些概念的基本定義,并思考它們與單片機代碼之間的關系。

一、什么是并發?

以生活中的示例來解釋并發性。通常,當你上床睡覺時,你希望在特定時間醒來。你在這里有兩個目標:上床睡覺以便休息,同時也要確保在起床時間別又睡著了。

introduction.jpg

確保你不會錯過起床時間的一種方法是保持清醒狀態并觀看時鐘,但這將使你無法上床睡覺。為了解決這個問題,我們通常使用鬧鐘在特定時間喚醒我們,這樣我們就可以專注于睡眠并且仍然達到喚醒的目標。

并發是我們用于描述場景的術語,當你有兩個或兩個以上的流程同時參加,但在任何時間點只能物理處理一個流程。

在上面的示例中,需要注意的兩個過程是睡眠和跟蹤時間(因此我們在所需的時間醒來)。同一個人在同一時間不可能同時做這兩個事情。

通常,我們只對與我們正在參與的流程相關的特定事件感興趣。正如你在上面注意到的,從時間角度來看,我們關心的唯一事件是是否該醒了。解決并發的典型方法是讓另一個物理資源(鬧鐘或人)監視我們感興趣的事件,然后提醒(或中斷)該事件已發生的事實,以便我們可以進行處理。

二、單片機和網絡物理系統中的并發

單片機和網絡物理系統通常必須處理并發性。實際應用中的一個例子是微波爐。該設備需要能夠處理食物加熱過程中按下按鈕或檢測你何時打開門。按下暫停或取消按鈕或打開門會使食物停止加熱。

單片機在設計時都會考慮并發性。除了通用CPU外,它們還包含許多用于與外界交互的專用硬件設備(稱為外圍設備),因此你可以連接諸如按鈕和顯示器之類的東西以及實現系統所需的其他外部硬件。通常,這些外設具有中斷機制,因此CPU可以要求它們監視特定事件,然后在該事件發生時中斷CPU。

三、更高級別的中斷和并發程序概述

單片機上的中斷的工作方式與前面討論的睡眠和鬧鐘示例相同。

你可以編寫一個配置外設以監視某個事件并在該事件發生時中斷CPU的程序,例如,當GPIO輸入值從0到1時。在程序運行時,CPU執行你的程序段。主程序。當你正在等待的事件發生時,外圍設備會向CPU發出事件已發生的信號。如果一切配置正確,CPU將停止在主程序中執行的操作,執行一個稱為中斷服務程序(ISR)或中斷處理程序的特殊功能,然后返回主程序以從中斷處繼續執行。完成時。

你必須將ISR編寫為代碼的一部分。假設你正在使用C編寫程序,這意味著你必須在將作為單片機將運行的可執行文件的一部分構建的源代碼中的某個地方聲明和定義它。

但是,你自己不會呼叫ISR。所有單片機開發工具都有一種特定的方式讓你告訴C編譯器某個功能是一個ISR,以及它與哪個特定中斷相關聯。一旦正確完成此操作,當發生特定中斷時,CPU將自動跳轉至該功能并執行。

C代碼中斷示例

由于中斷的工作方式,一開始在編程中處理并發性似乎有點不直觀。

下圖詳細介紹了用C語言編寫的具有ISR的代碼如何操作,以幫助提供一種思考并發程序的好方法,假定所有中斷配置均正確完成。

introduction-to.jpg

1.CPU在main函數的while循環中執行代碼。
2.事件(從1變為0)發生在為中斷配置的引腳上。
3.CPU在while循環中停止執行代碼,并執行中斷服務程序。
4.完成中斷服務程序執行后,CPU從中斷處重新開始執行主循環。
5.CPU在while循環中執行代碼。
6.事件再次發生。
7.CPU在while循環中停止執行代碼,并執行中斷服務程序。
8.完成中斷服務程序執行后,CPU從中斷處重新開始執行主循環。

主站蜘蛛池模板: 通城县| 吉木萨尔县| 灌云县| 苍南县| 辽源市| 平乡县| 安龙县| 敖汉旗| 宣武区| 宣城市| 双城市| 栾城县| 古交市| 金堂县| 阳朔县| 昌图县| 休宁县| 凤翔县| 梨树县| 隆昌县| 呼图壁县| 枝江市| 日土县| 页游| 屯昌县| 成安县| 六安市| 南漳县| 大埔区| 嘉定区| 九龙县| 定南县| 南华县| 柞水县| 淮阳县| 林甸县| 武穴市| 青河县| 玉环县| 丹阳市| 钟山县|