<noscript id="jftie"></noscript>
    <style id="jftie"><mark id="jftie"><dfn id="jftie"></dfn></mark></style>
  1. <span id="jftie"></span>
    • 国产成人精品久久一区二区,韩国精品久久久久久无码,国产精品国产高清国产av,欧美99久久无码一区人妻a片,亚洲高清码在线精品av,午夜人妻久久久久久久久,伊人热热久久原色播放www ,亚洲女教师丝祙在线播放
      你的位置:首頁 > 互連技術 > 正文

      微控制器和嵌入式系統中的并發和中斷

      發布時間:2023-04-21 責任編輯:lina

      【導讀】通常,我們只對與我們正在處理的過程相關的特定事件感興趣。正如您在上面注意到的,從時間的角度來看,我們關心的事件是是否該起床了。處理并發的典型方法是讓另一個物理資源(鬧鐘或人)監視我們感興趣的事件,然后提醒(或打斷)我們事件已經發生的事實,以便我們可以處理它。


      本文是探討并發和中斷概念的系列文章中的篇。本系列的大部分內容將直接處理微控制器和 GPIO 中斷。

      在初的這篇文章中,我們將討論這些概念的基本定義,并考慮它們與為微控制器編寫代碼的相關性。

      什么是并發?

      讓我們用一個我們都熟悉的例子來談談并發。通常,當您上床睡覺時,您想在特定時間醒來。你在這里有兩個目標:上床睡覺,這樣你就可以休息,但也要確保你不會睡到你想要的起床時間。 

      確保您不會錯過起床時間的一種方法是保持清醒并看時鐘,但這會破壞您想要上床睡覺的目的。為了幫助補救這個問題,我們通常使用鬧鐘(一個設備或受信任的人,到那時已經醒了)在特定時間叫醒我們,這樣我們就可以專注于睡眠,同時仍然實現我們的目標時間。

      并發性是我們用來描述您同時處理兩個或多個進程但在任何時間點只能物理處理其中一個進程的能力的場景。 

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

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

      圖 1 顯示了這方面的時間線圖解。


      微控制器和嵌入式系統中的并發和中斷
      圖 1.上床睡覺并讓鬧鐘在特定時間叫醒您的時間線圖示。


      嵌入式和網絡物理系統中的并發 

      嵌入式和網絡物理系統通常必須處理并發性。 

      這個概念的一個例子是微波爐。該設備需要能夠處理按鈕按下或檢測您在食物加熱時打開門的時間。按下暫停或取消按鈕或打開門將導致食物停止加熱。 

      微控制器——您通常將其編程為系統“大腦”的計算機——在設計時就考慮到了并發性。

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

      中斷和并發程序的概述

      微控制器上的中斷就像我之前討論的睡眠和鬧鐘示例一樣工作。 

      您可以編寫一個程序,將外設配置為監視某個事件并在該事件發生時中斷 CPU——例如,當 GPIO 輸入值從 0 變為 1 時。當您的程序運行時,CPU 會執行您的程序片段主程序。當您等待的事件發生時,外圍設備向 CPU 發出事件已經發生的信號。如果一切配置正確,CPU 將停止它在主程序中所做的任何事情,執行一個稱為中斷服務例程 (ISR) 或中斷處理程序的特殊函數,然后返回主程序從中斷的地方繼續當它完成時。 

      您必須將 ISR 編寫為代碼的一部分。假設您正在使用 C 編寫程序,這意味著您必須在源代碼中的某處聲明和定義它,該源代碼將作為微控制器將運行的可執行文件的一部分構建。

      但是,您永遠不會自己調用 ISR。所有微控制器開發工具都有一種特定的方式讓您告訴 C 編譯器某個函數是 ISR 以及它與哪個特定中斷相關聯。正確完成此操作后,當特定中斷發生時,CPU 將自動跳轉到該函數并執行它。 

      C 代碼中的中斷示例

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

      下圖展示了用 C 語言編寫的具有 ISR 的代碼將如何運行,以幫助提供一種思考并發程序的好方法。它假定所有中斷配置都已正確完成。


      微控制器和嵌入式系統中的并發和中斷
      圖 2.帶有中斷的 C 代碼


      CPU 在 main 函數的 while 循環中執行代碼。
      感興趣的事件(從 1 變為 0)發生在為中斷配置的引腳上。
      CPU停止執行while循環中的代碼,轉而執行中斷服務程序。
      中斷服務程序執行完畢后,CPU 從中斷處繼續執行主循環。
      CPU 正在 while 循環中執行代碼。
      感興趣的事件再次發生。
      CPU停止執行while循環中的代碼,轉而執行中斷服務程序。
      中斷服務程序執行完畢后,CPU 從中斷處繼續執行主循環。

      外圍設備和 GPIO 的中斷

      本系列的大部分內容都集中在微控制器的并發和中斷概念上。接下來,我們將討論GPIO 中斷及其工作原理。 


      免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理。


      推薦閱讀:

      海康威視發布2022年ESG報告:科技為善,助力可持續的美好未來

      如何設計簡單的電壓控制雙向電流源

      運算放大器的8種應用電路,您都了解嗎?

      打開信號繼電器的正確方式

      輕量級的電源系統,該如何設計?


      特別推薦
      技術文章更多>>
      技術白皮書下載更多>>
      熱門搜索
      ?

      關閉

      ?

      關閉

      主站蜘蛛池模板: 亚洲成av人片在线观看天堂无| 国产精品日日做人人爱| 绝顶高潮合集videos| 伊人蕉久中文字幕无码专区| 无码日韩av一区二区三区| 日本巨大的奶头在线观看| 国产精品制服| 人妻去按摩店被黑人按中出| 蜜桃视频一区二区三区在线观看| 国产成人综合美国十次| 国产人妻丰满熟妇嗷嗷叫| 国产又爽又刺激的视频| 日欧一片内射va在线影院| 国产私拍福利精品视频| 无码成人h免费视频在线观看| 日本少妇被黑人猛cao| 欧美人成视频在线视频| 一本精品中文字幕在线| 色成人精品免费视频| 国产性夜夜春夜夜爽| 亚洲成年看片在线观看| 性无码免费一区二区三区在线| 国产亚洲精品久久77777| 久久www免费人成人片| 久久综合婷婷成人网站| 久久婷婷五月综合色高清| 国产激情久久久久久熟女老人| 欧美熟妇另类久久久久久不卡| 中文字幕日产无码| 日日干夜夜操高清视频| 男女裸交免费无遮挡全过程| 日日噜噜夜夜狠狠视频无码日韩| 少妇被爽到高潮动态图| 亚洲另类欧美在线电影| 亚洲精品无码久久一线| 国产农村黄aaaaa特黄av毛片| 国产成人综合美国十次| 国产精品宾馆在线精品酒店| 日本人妻人人人澡人人爽| 国产男女做爰高清全过小说| 精品国产一区二区三区吸毒|