大香蕉大香蕉在线播放-日韩av在线一区中文字幕-日韩熟女熟妇久久精品综合-精品免费视频一区二区三区

技術(shù)熱線: 4007-888-234
設(shè)計(jì)開發(fā)

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開發(fā)工具

提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享

技術(shù)支持

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力

新聞中心

提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)

單片機(jī)與嵌入式系統(tǒng)中的并發(fā)和中斷

更新時(shí)間: 2019-10-18
閱讀量:2890

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

一、什么是并發(fā)?

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

introduction.jpg

確保你不會(huì)錯(cuò)過起床時(shí)間的一種方法是保持清醒狀態(tài)并觀看時(shí)鐘,但這將使你無法上床睡覺。為了解決這個(gè)問題,我們通常使用鬧鐘在特定時(shí)間喚醒我們,這樣我們就可以專注于睡眠并且仍然達(dá)到喚醒的目標(biāo)。

并發(fā)是我們用于描述場景的術(shù)語,當(dāng)你有兩個(gè)或兩個(gè)以上的流程同時(shí)參加,但在任何時(shí)間點(diǎn)只能物理處理一個(gè)流程。

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

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

二、單片機(jī)和網(wǎng)絡(luò)物理系統(tǒng)中的并發(fā)

單片機(jī)和網(wǎng)絡(luò)物理系統(tǒng)通常必須處理并發(fā)性。實(shí)際應(yīng)用中的一個(gè)例子是微波爐。該設(shè)備需要能夠處理食物加熱過程中按下按鈕或檢測你何時(shí)打開門。按下暫?;蛉∠粹o或打開門會(huì)使食物停止加熱。

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

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

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

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

你必須將ISR編寫為代碼的一部分。假設(shè)你正在使用C編寫程序,這意味著你必須在將作為單片機(jī)將運(yùn)行的可執(zhí)行文件的一部分構(gòu)建的源代碼中的某個(gè)地方聲明和定義它。

但是,你自己不會(huì)呼叫ISR。所有單片機(jī)開發(fā)工具都有一種特定的方式讓你告訴C編譯器某個(gè)功能是一個(gè)ISR,以及它與哪個(gè)特定中斷相關(guān)聯(lián)。一旦正確完成此操作,當(dāng)發(fā)生特定中斷時(shí),CPU將自動(dòng)跳轉(zhuǎn)至該功能并執(zhí)行。

C代碼中斷示例

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

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

introduction-to.jpg

1.CPU在main函數(shù)的while循環(huán)中執(zhí)行代碼。
2.事件(從1變?yōu)?)發(fā)生在為中斷配置的引腳上。
3.CPU在while循環(huán)中停止執(zhí)行代碼,并執(zhí)行中斷服務(wù)程序。
4.完成中斷服務(wù)程序執(zhí)行后,CPU從中斷處重新開始執(zhí)行主循環(huán)。
5.CPU在while循環(huán)中執(zhí)行代碼。
6.事件再次發(fā)生。
7.CPU在while循環(huán)中停止執(zhí)行代碼,并執(zhí)行中斷服務(wù)程序。
8.完成中斷服務(wù)程序執(zhí)行后,CPU從中斷處重新開始執(zhí)行主循環(huán)。

老司机精品成人无码AV| 阴茎大头插少妇蜜穴视频| 新视觉亚洲三区二区一区理伦| 亚洲色欲久久久久综合网| 女人张开腿让男人捅个爽| 日本中文字幕无人区一区二区| 国产亚洲欧美中文日韩| 欧美一区二区三区男人的天堂| 亚洲一区二区三成人精品| 免费国产香蕉视频在线观看| aaa啊啊啊黄片| 97性无码区免费| 日本免费一区二区在线| 白色紧身裤无码系列在线| 亚洲精品伦理熟女国产| 国产一区二区三区三级88| 亚洲乱熟女一区二区三区| 黑大吊肏小騷逼噴水| 黄色亚洲一级大片| 性一乱一交一免费看视频| 潮中文字幕在线观看| 中文字幕在线观看第二页| 最新的亚洲欧美中文字幕| 97超视频免费在线观看| 亚洲波多野结衣日韩在线| 中文字幕在线观视频| 欧美猛男一区二区三区快播| 美国女人抠插bbb| 福利国产第一视频| 91精品欧美久久久久久| 日本亚欧乱色视频69室| 中文字幕人妻一区二区三区人妻| 美女亚洲福利视频| 久久69精品久久久久免| 国产熟女视频一区二区三区| 亚洲一区二区三区精品日韩| 国产欧美一二区不卡视频| 亚洲一区二区三区精品日韩| 大鸡巴操淫逼视频| 少妇被黑人到高潮喷出白浆| 日韩国产精品视频一区|