今天記錄一下關(guān)于外部中斷的知識點(diǎn)以及在32上外部中斷的相關(guān)寄存器以及配置的流程。
一、原理介紹
首先,什么是中斷
中斷就是將正在做的事情停下來,先去完成另外一件事情,完成后繼續(xù)回來做這件事。
比如:在吃飯的時(shí)候有電話打來,去接電話,打完電話后繼續(xù)吃法。
在計(jì)算機(jī)科學(xué)中,中斷(英語:Interrupt)是指處理器接收到來自硬件或軟件的信號,提示發(fā)生了某個事件,應(yīng)該被注意,這種情況就稱為中斷。
通常,在接收到來自外圍硬件(相對于中央處理器和內(nèi)存)的異步信號,或來自軟件的同步信號之后,處理器將會進(jìn)行相應(yīng)的硬件/軟件處理。發(fā)出這樣的信號稱為進(jìn)行中斷請求(interrupt request,IRQ)。硬件中斷導(dǎo)致處理器通過一個運(yùn)行信息切換(context switch)來保存執(zhí)行狀態(tài)(以程序計(jì)數(shù)器和程序狀態(tài)字等寄存器信息為主);軟件中斷則通常作為CPU指令集中的一個指令,以可編程的方式直接指示這種運(yùn)行信息切換,并將處理導(dǎo)向一段中斷處理代碼。中斷在計(jì)算機(jī)多任務(wù)處理,尤其是即時(shí)系統(tǒng)中尤為有用。
上圖就是中斷的流程圖,可以看出中斷也支持嵌套,高級別的中斷可以打斷低級別的中斷。
中斷的分類:根據(jù)中斷的來源可以分為內(nèi)部中斷、外部中斷
根據(jù)中斷來源的性質(zhì)不同可以分為軟件中斷、硬件中斷
根據(jù)系統(tǒng)處理和響應(yīng)的方式可以分為向量中斷、非向量中斷
今天主要記錄外部中斷的一些要點(diǎn),其他的分類方式以及各類中斷的區(qū)分以后會再寫博客記錄。
外部指的是相對CPU來說的,也就是說這個中斷是發(fā)生在CPU外的。
外部中斷的觸發(fā)方式有:電平觸發(fā)和跳沿觸發(fā)
邊沿觸發(fā)和電平觸發(fā)基本就是觸發(fā)器和鎖存器的區(qū)別。
觸發(fā)器是邊沿觸發(fā),只有當(dāng)時(shí)鐘上升(或下降)的一瞬間,觸發(fā)器會讀取并鎖存輸入信號。輸出信號僅在時(shí)鐘信號上升(或下降)的一瞬間會發(fā)生變化。
鎖存器是電平觸發(fā),只要使能(enable)信號處于高電平(或低電平),輸出就會隨著輸入信號變化,直到使能信號變?yōu)榈碗娖剑ɑ蚋唠娖剑r(shí),輸出才會鎖存,不再隨輸入變化。
二、在32上的外部中斷
STM32F4的每個IO都可以作為外部中斷輸入。
STM32F4的中斷控制器支持22個外部中斷/事件請求:
EXTI線0~15:對應(yīng)外部IO口的輸入中斷。
EXTI線16:連接到PVD輸出。
EXTI線17:連接到RTC鬧鐘事件。
EXTI線18:連接到USB OTG FS喚醒事件。
EXTI線19:連接到以太網(wǎng)喚醒事件。
EXTI線20:連接到USB OTG HS(在FS中配置)喚醒事件。
EXTI線21:連接到RTC入侵和時(shí)間戳事件。
EXTI線22:連接到RTC喚醒事件。
每個外部中斷線可以獨(dú)立的配置觸發(fā)方式(上升沿,下降沿或者雙邊沿觸發(fā)),觸發(fā)/屏蔽,專用的狀態(tài)位。
但是值得注意的是:外部IO口有16條中斷線,但并不是能設(shè)置16個外部中斷
IO口外部中斷在中斷向量表中只分配了7個中斷向量,也就是只能使用7個中斷服務(wù)函數(shù)
中斷線5-9分配一個中斷向量,共用一個中斷服務(wù)函數(shù),中斷線10-15分配一個中斷向量,公用一個中斷服務(wù)函數(shù)。
中斷的配置過程還是比較簡單的
1、使能時(shí)鐘
2、初始化IO口為輸入模式
3、設(shè)置IO口與中斷線的映射關(guān)系,并設(shè)置觸發(fā)條件。
4、配置中斷優(yōu)先級(搶占、響應(yīng))以及中斷分組。
5、編寫中斷服務(wù)函數(shù)(中斷函數(shù)的最后一個語句是清除中斷標(biāo)記位)
關(guān)于中斷優(yōu)先級,要強(qiáng)調(diào)一些:在STM32上的中斷優(yōu)先級與51上的中斷優(yōu)先級不同,51上只是給每個中斷一個數(shù)字,高優(yōu)先級的可以打斷低優(yōu)先級,若低優(yōu)先級的中斷在高優(yōu)先級中斷執(zhí)行的時(shí)候發(fā)生會被忽略;在32上中斷優(yōu)先級有搶占優(yōu)先級和響應(yīng)優(yōu)先級之分,其中搶占優(yōu)先級類似于51上的中斷優(yōu)先級,高搶占優(yōu)先級的中斷會打斷低搶占優(yōu)先級的中斷,而響應(yīng)優(yōu)先級就是給相同搶占優(yōu)先級的中斷排了一個次序,若倆個相同搶占優(yōu)先級的中斷同時(shí)發(fā)生時(shí),會先執(zhí)行高響應(yīng)優(yōu)先級的中斷,低響應(yīng)優(yōu)先級的中斷會在之后執(zhí)行。這樣可以選擇的配置方式就更多了。
在32上配置外部中斷的代碼還是很簡單的,使能時(shí)鐘和配置IO口的代碼就不貼的
關(guān)于配置中斷
Ex_NVIC_Config(GPIO_E,2,FTIR); //下降沿觸發(fā)
MY_NVIC_Init(3,2,EXTI2_IRQn,2); //搶占3,子優(yōu)先級2,組2
第一個函數(shù)用來配置PE2為下降沿中斷,第二個函數(shù)設(shè)置中斷線2的搶占優(yōu)先級為3,響應(yīng)優(yōu)先級為2,中斷分組為2。
接下來編寫中斷服務(wù)函數(shù)
void EXTI2_IRQHandler(void)
{
delay_ms(10); //消抖
if(KEY2==0)
{
LED0=!LED0;
}
EXTI->PR=1<<2; //清除LINE2上的中斷標(biāo)志位
}
首先是10ms的軟件去抖動,此處的含義是按鍵按下后改變LED0的狀態(tài),最后要清除中斷標(biāo)志位。
三、總結(jié)
外部中斷在開發(fā)中是時(shí)常用到的,但是對外部中斷的使用也是有許多技巧和策略的,我了解的并不多,這需要時(shí)間和經(jīng)驗(yàn)的積累,我知道的一點(diǎn)就是,在中斷中處理盡可能少的事情,最好只是設(shè)置一個標(biāo)志,把主要工作留給主函數(shù)來執(zhí)行。
以上就是我對外部中斷的總結(jié)
上一篇:錯誤解決:STM32F103串口1與串口3相同代碼卻結(jié)果不同
下一篇:STM32上的PWM
推薦閱讀
史海拾趣
為了進(jìn)一步提升公司實(shí)力,APX Technologies開始拓展海外市場。公司在多個國家和地區(qū)設(shè)立了分支機(jī)構(gòu),并積極招聘當(dāng)?shù)氐膬?yōu)秀人才。通過不斷的努力,APX Technologies的產(chǎn)品逐漸在國際市場上占據(jù)了一席之地,公司的規(guī)模和影響力也不斷擴(kuò)大。
面對激烈的市場競爭和不斷上升的成本壓力,芯聯(lián)集成通過優(yōu)化成本結(jié)構(gòu)、提高生產(chǎn)效率等措施,成功降低了生產(chǎn)成本。同時(shí),公司還加強(qiáng)了與供應(yīng)商的合作,實(shí)現(xiàn)了供應(yīng)鏈的優(yōu)化管理。這些努力使芯聯(lián)集成在保持產(chǎn)品質(zhì)量的同時(shí),降低了產(chǎn)品售價(jià),提升了盈利能力。
AZM公司成立于電子行業(yè)的蓬勃發(fā)展時(shí)期,創(chuàng)始人憑借對微電子技術(shù)的深刻理解和敏銳的市場洞察力,決定投身于這一領(lǐng)域。創(chuàng)業(yè)初期,公司面臨著資金短缺、技術(shù)瓶頸和市場認(rèn)可度低等多重挑戰(zhàn)。然而,創(chuàng)始人憑借堅(jiān)定的信念和不懈的努力,帶領(lǐng)團(tuán)隊(duì)攻克了一個又一個技術(shù)難題,成功研發(fā)出了具有競爭力的微電子產(chǎn)品,并逐漸在市場上獲得了認(rèn)可。
Emulation自創(chuàng)立之初,就專注于模擬和仿真技術(shù)的研發(fā)。在成立初期,公司成功開發(fā)出一款具有革命性的電子系統(tǒng)模擬軟件,該軟件能夠準(zhǔn)確模擬電子設(shè)備的性能和行為,為工程師們提供了強(qiáng)大的設(shè)計(jì)工具。這一創(chuàng)新技術(shù)迅速獲得了市場的認(rèn)可,成為Emulation公司發(fā)展的基石。
盡管AVAGO公司在發(fā)展過程中取得了顯著成就,但也面臨著諸多挑戰(zhàn)。隨著全球半導(dǎo)體市場的競爭日益激烈,公司需要不斷投入研發(fā)資金、加強(qiáng)人才培養(yǎng)、優(yōu)化生產(chǎn)流程等方面來保持競爭優(yōu)勢。同時(shí),公司還需要密切關(guān)注行業(yè)動態(tài)和市場需求變化,以便及時(shí)調(diào)整戰(zhàn)略和產(chǎn)品線。在未來,AVAGO公司將繼續(xù)致力于技術(shù)創(chuàng)新和市場拓展,為全球客戶提供更優(yōu)質(zhì)的產(chǎn)品和服務(wù)。
以上五個故事僅是對AVAGO公司發(fā)展歷程的簡要描述,實(shí)際上公司在發(fā)展過程中還經(jīng)歷了許多其他重要事件和階段。這些故事展示了AVAGO公司如何憑借技術(shù)實(shí)力、市場洞察力和戰(zhàn)略眼光在電子行業(yè)中脫穎而出,并成為全球領(lǐng)先的半導(dǎo)體企業(yè)之一。
在視頻處理中,FPG和DSP之爭早就有了,考慮到量產(chǎn)價(jià)格的原因 ,我們老大偏向DSP,可據(jù)說FPGA做高清視頻處理比 DSP效果好,各位有什么看法啊,也沒機(jī)會做個比較!… 查看全部問答∨ |
http://blog.codingnow.com/2009/12/cpp2009.html Lippman 大牛的第一場,關(guān)于大型可伸縮性的軟件開發(fā)的, Chen Shuo 同學(xué)翻譯的很不錯 找到電源,所以可以寫寫了。 果然是牛人啊,上來就講形而上的東西。我聽的有趣,就做了點(diǎn)筆記,但是記的不 ...… 查看全部問答∨ |
嵌入式開發(fā),Linux系統(tǒng),是可以在驅(qū)動里面調(diào)用calibrate_delay 這個函數(shù)的吧 不知道需要包含什么頭文件… 查看全部問答∨ |
|
WINCE下10Mbps的SPI數(shù)據(jù)流采用中斷的接收工作方式(等到了中斷然后一個個地讀接收SFR)能不能處理的過來?難道必須用DMA工作方式嗎? WINCE下10Mbps的SPI數(shù)據(jù)流采用中斷的接收工作方式(等到了中斷然后一個個地讀接收SFR)能不能處理的過來?難道必須用DMA工作方式嗎?… 查看全部問答∨ |
eeworld給的分,慰勞慰勞弟兄們!(3) 以后咱好好干活... 我們得好好加油哈!!! 為了中國軟件的明天還有,eeworld的未來!!! 呵呵… 查看全部問答∨ |
現(xiàn)在市場上有很多多串口卡賣,但都必須借助PC為平臺來使用,我想有一塊多串口卡 ;其功能是在外部有一個25Hz的中斷信號輸入到多串口卡,此時(shí)幾個串口同時(shí)錄取數(shù)據(jù),錄取完成以后將幾路的數(shù)據(jù)按一定的順序?qū)懭氲揭粋€RAM中,以給其他設(shè)備來使用。… 查看全部問答∨ |
|
原程序:#include <fcntl.h>#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <time.h>int main(){ int fds[2]; & ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- STM32一文通(6) 外部中斷
- ESP32玩轉(zhuǎn)MicroPython(一) 燒入固件, 初識
- ESP32玩轉(zhuǎn)MicroPython(二) 連接WIFI網(wǎng)絡(luò) webperl文件傳輸
- ESP32玩轉(zhuǎn)MicroPython(三) 延時(shí)、計(jì)時(shí) 和GPIO操作
- 玩轉(zhuǎn) ESP32 + Arduino (一) 開發(fā)環(huán)境搭建
- 玩轉(zhuǎn) ESP32 + Arduino (四) 電容按鍵 霍爾傳感器 外部中斷 延時(shí) 脈沖檢測
- 玩轉(zhuǎn) ESP32 + Arduino (五) platformIO引入類庫 自開發(fā)庫 串口打印字符串
- 玩轉(zhuǎn) ESP32 + Arduino (六) 硬件定時(shí)器, IIC, SPI
- 玩轉(zhuǎn) ESP32 + Arduino (八) U8G2驅(qū)動OLED
- 超快充技術(shù)平權(quán)時(shí)代,要來了
- 智元機(jī)器人與Physical Intelligence(Pi)達(dá)成戰(zhàn)略合作
- 不到10萬塊!特斯拉再次面臨生死狙擊?
- 高階智駕NOA功能解析:技術(shù)架構(gòu)與實(shí)現(xiàn)路徑
- 智能體爆發(fā)元年,誰在“無人區(qū)”繪制地形圖?
- 億緯鋰能大圓柱電池進(jìn)展:良率突破97%
- 500Wh/kg電池競速:鋰金屬電池挑戰(zhàn)全固態(tài)共識?(下)
- 500Wh/kg電池競速:鋰金屬電池挑戰(zhàn)全固態(tài)共識?(上)
- 密歇根大學(xué)突破:低溫充電速度提升500%
- 谷歌發(fā)布Android Auto 14.0更新,界面優(yōu)化并準(zhǔn)備車機(jī)版Gemini AI
- Silicon Labs BG22-EK4108A 開發(fā)套件 用科技連接未來 申請進(jìn)行時(shí)!
- 快來應(yīng)援吧!投票選出你最愛的TI培訓(xùn)課程
- PI HiperPFS-4系列功率因數(shù)校正IC,了解產(chǎn)品特色,答題享好禮!
- EEWORLD下載中心熱力上線,豈能無禮!
- 有獎評測+DIY:玩轉(zhuǎn)新版1.3元單片機(jī)CH554,贏以太網(wǎng)分析儀器/USB分析儀
- Microchip直播|如何在ADAS系統(tǒng)中解決精密授時(shí)挑戰(zhàn)
- 【有獎?wù)魑摹縏I DSP 30 周年——聊聊DSP的那些事兒
- ST電機(jī)評測有獎大作戰(zhàn):領(lǐng)取任務(wù)卡,一起啃電機(jī)驅(qū)動難題!
- Mouser&TE直播:解鎖智能家居部件新技術(shù),探索連接黑科技
- TE白皮書下載|《散熱橋技術(shù)——電子設(shè)備散熱領(lǐng)域的創(chuàng)新》