最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

CW32L083系列MCU中斷系統(tǒng)介紹

2022-12-01 10:47 作者:武漢芯源半導(dǎo)體  | 我要投稿

本文針對CW32L083系列MCU,同系列產(chǎn)品亦可參考。


ARM? Cortex?-M0+ 內(nèi)核的嵌套向量中斷控制器 (NVIC),用于管理中斷和異常。NVIC和處理器內(nèi)核緊密相連,可以實現(xiàn)低延遲的異常和中斷處理。處理器支持最多32個中斷請求 (IRQ)輸入,支持多個內(nèi)部異常。


主要特性?

? 16個內(nèi)部異常?

? 32個可屏蔽外部中斷?

? 4個可編程的優(yōu)先級?

? 低延時的異常和中斷處理

? 支持中斷嵌套?

? 中斷向量表重映射


本文介紹了處理器的 32 個外部中斷請求(IRQ0 ~ IRQ31),處理器內(nèi)部異常的具體情況請參考“ARM? Cortex?-M0+Technical Reference Manual”與“ARM? v6-M Architecture Reference Manual”。


中斷優(yōu)先級?

外部中斷可設(shè)置 4 級優(yōu)先級,最高優(yōu)先級為“0”,最低優(yōu)先級為“3”,默認(rèn)值為“0”。當(dāng)處理器正在執(zhí)行一個中斷處理程序時,如果出現(xiàn)一個更高優(yōu)先級的中斷,那么這個中斷就被搶占。如果出現(xiàn)的中斷的優(yōu)先級和正在處理的中斷的優(yōu)先級相同或更低,這個中斷就不會被搶占,但是新中斷的狀態(tài)就變?yōu)閽炱稹H绻鄠€掛起的中斷具有相同的優(yōu)先級,中斷編號越小的掛起中斷優(yōu)先處理。例如,如果IRQ[0]和IRQ[1]均掛起時,并且兩者的優(yōu)先級相同,那么先處理 IRQ[0]。


中斷向量表

ARM? Cortex?-M0+ 響應(yīng)中斷時,處理器自動從存儲器的中斷向量表中取出中斷服務(wù)程序 ( ISR )的起始地址。中斷向量表包括主棧指針(MSP)的初始值,內(nèi)部異常和外部中斷的服務(wù)程序入口地址。每個中斷向量占用1個字(4 字節(jié)),中斷向量的存儲地址為向量編號乘以4,下面的是CW32L083的中斷向量表。

圖片
圖片


CW32L083由于部分外設(shè)的中斷復(fù)用一個IRQ中斷源,在中斷服務(wù)程序中應(yīng)先檢查中斷標(biāo)志位,以確定產(chǎn)生中斷的外設(shè)。NMI在CW32L083中未使用。HSE 、LSE 時鐘信號起振失敗和 LSI、LSE、HSIOSC、HSE、PLL 時鐘信號穩(wěn)定對應(yīng) RCC 全局中斷。HSE 或 LSE 時鐘信號在運(yùn)行中失效對應(yīng) FAULT 中斷。


中斷寄存器的相關(guān)配置

1.中斷的使能、掛起、清除掛起

ARM? Cortex-M0+處理器支持最多32個外部中斷源,分別對應(yīng)中斷使能設(shè)置寄存器NIVC_ISER的32個使能位,和中斷使能清除寄存器NVIC_ICER的32個禁止位。將使能位置1,允許中斷;將禁止位置1,禁止中斷。上文中NVIC中斷使能僅針對處理器 NVIC而言,外設(shè)的中斷是否使能,還受相應(yīng)外設(shè)的中斷控制寄存器控制。

而在中斷發(fā)生的時候,如果系統(tǒng)正在處理相同優(yōu)先級的或者更高優(yōu)先級的中斷,系統(tǒng)將不會立馬的處理這個中斷,而是將這個中斷的狀態(tài)設(shè)置為掛起,保存在中斷掛起狀態(tài)寄存器中,在處理器未進(jìn)去此中斷處理之前,如果沒有手動清除掛起狀態(tài),這個狀態(tài)會一直有效,等處理器進(jìn)入中斷處理的時候,硬件會自動清除相應(yīng)的中斷掛起狀態(tài)。也可以通過設(shè)置中斷掛起設(shè)置寄存器NVIC_ISPR的對應(yīng)位,將此中斷的狀態(tài)設(shè)置為掛起狀態(tài),如果系統(tǒng)沒有正在處理與之相同優(yōu)先級或更高優(yōu)先級的中斷,此中斷將被立即響應(yīng)并處理??梢酝ㄟ^設(shè)置中斷掛起清除寄存器NVIC_ICPR的對應(yīng)位,將此中斷的狀態(tài)設(shè)置為掛起清除狀態(tài)。

2.中斷的優(yōu)先級、中斷屏蔽

中斷優(yōu)先級控制寄存器NVIC_IPR0 ~ NVIC_IPR7,用于設(shè)置IRQ0~IRQ31 的中斷優(yōu)先級,每個中斷源使用8位,在CW32L083中僅使用了高兩位,最多可設(shè)置4個中斷優(yōu)先級。

在某些特殊場合,需要禁止所有中斷,可以使用中斷屏蔽寄存器PRIMASK實現(xiàn)。PRIMASK只有最低1位有效,將此位置1,除了NMI和硬件錯誤異常之外的所有外部中斷和異常都被禁止;清0后,允許響應(yīng)中斷和異常。該位復(fù)位后默認(rèn)為0。


按鍵中斷檢測實驗分析

以CW32L083評估板為例,按鍵連接至CW32L083的PA4、PA5端口,LED連接至PC2、PC3接口。按鍵按下將產(chǎn)生中斷,在中斷服務(wù)程序中進(jìn)行LED翻轉(zhuǎn)。


由上面代碼可以看到,如果按下KEY1(PA04),LED1(PC03)的狀態(tài)會翻轉(zhuǎn),如果松開按鍵,LED1又會翻轉(zhuǎn)一次。在每次執(zhí)行中斷函數(shù)的時候,需要清除中斷標(biāo)志位即GPIOA_INTFLAG_CLR(bv4)。


CW32L083系列MCU中斷系統(tǒng)介紹的評論 (共 條)

分享到微博請遵守國家法律
夏河县| 抚远县| 大英县| 青岛市| 南和县| 离岛区| 东乡族自治县| 巴南区| 顺昌县| 江城| 霍邱县| 百色市| 珲春市| 宣武区| 沂南县| 扬中市| 崇礼县| 祥云县| 崇义县| 乌鲁木齐县| 湖北省| 嘉定区| 东阿县| 澄迈县| 平乐县| 民丰县| 北安市| 新建县| 基隆市| 昆山市| 五台县| 宜州市| 宜昌市| 东山县| 平南县| 井冈山市| 安溪县| 曲阜市| 老河口市| 曲水县| 甘孜|