HC32F460 系列的中斷控制器 INTC
1
摘要
本篇應(yīng)用筆記主要介紹 HC32F460 系列芯片的中斷控制器(Interrupt Controller, INTC)模塊,并通過展示外部管腳中斷、軟件中斷、NMI 中斷樣例代碼簡要說明如何使用 INTC 模塊。
2
INTC 簡介
HC32F460 系列的中斷控制器(INTC)模塊豐富的功能,其中包括了對(duì)不可屏蔽中斷
(NMI)、外部管腳中斷(EXINT)、軟件中斷(SWI)、中斷、事件使能的配置;外設(shè)模塊中斷源自由設(shè)置到除系統(tǒng)中斷向量入口的任意入口。
INTC 主要特性:
? 外設(shè)中斷向量入口中斷源可配置
? 16 個(gè)可編程中斷優(yōu)先級(jí)
? 多種可選擇的 NMI 中斷源
? 16 個(gè)外部管腳中斷
? 32 個(gè)軟件中斷
? 系統(tǒng)休眠模式喚醒源配置
? 系統(tǒng)停止模式喚醒源配置
? 支持 WFI、WFE后的喚醒
3
HC32F460 系列的 INTC
3.1
NMI 不可屏蔽中斷
不可屏蔽中斷(NMI)具有優(yōu)先級(jí),HC32F460 系列的 NMI 可選擇多個(gè)中斷事件請(qǐng)求,應(yīng)用程序可通過查詢 NMIFR 寄存器來確定 NMI 中斷的來源,并通過 NMICFR 寄存器來清除對(duì)應(yīng)標(biāo)志位。
3.1.1 NMI 主要特點(diǎn)
? 可選擇多個(gè)中斷請(qǐng)求作為 NMI 信號(hào)來源:
- NMI 管腳中斷
- 外部高速 XTAL 振蕩停止中斷
- 外部低速 XTAL32 振蕩停止中斷
- WDT 下溢、刷新錯(cuò)誤中斷
- SWDT 下溢、刷新錯(cuò)誤中斷
- 低電壓監(jiān)測 PVD1 中斷
- 低電壓監(jiān)測 PVD2 中斷
- SRAM 奇偶校驗(yàn)錯(cuò)誤中斷
- SRAM ECC 校驗(yàn)錯(cuò)誤中斷
- MPU 總線錯(cuò)誤中斷
? NMI 管腳中斷數(shù)字濾波功能及濾波器時(shí)鐘可設(shè)
? NMI 管腳中斷上升沿、下降沿觸發(fā)
3.1.3 NMI 配置流程說明
下面流程圖以 NMI 管腳中斷為例,給出了配置流程。

至此,NMI 管腳中斷的相關(guān)配置結(jié)束,如需使用 NMI 管腳中斷功能,還需要配置中斷選擇寄存器以及 NVIC 部分,這部分配置說明將在中斷源選擇章節(jié)進(jìn)行詳細(xì)講解。
3.2 外部管腳中斷
HC32F460 系列有 16 個(gè)外部管腳中斷事件,可通過寄存器配置每個(gè)通道的屬性,包括數(shù)字濾波功能、觸發(fā)電平選擇。
3.3
軟件中斷
HC32F460 系列有 32 個(gè)軟件中斷請(qǐng)求,且與中斷向量 0~31 一一對(duì)應(yīng),可通過軟件置位寄存器INT_SWIER 的對(duì)應(yīng) bit,來產(chǎn)生一次軟件中斷事件請(qǐng)求。
3.4
中斷源選擇
HC32F460 系列一共有 16 個(gè)系統(tǒng)中斷向量入口和 144 個(gè)外設(shè)中斷向量入口,用戶可通過中斷源選擇寄存器,將芯片的 239 個(gè)外設(shè)的中斷請(qǐng)求配置到 144 個(gè)中斷向量入口,靈活管理中斷服務(wù)程序。
3.4.2 中斷選擇寄存器方法說明
下面同樣以外部管腳中斷 8 為例,對(duì)中斷選擇寄存器進(jìn)行說明。
配置中斷選擇寄存器前,先查詢芯片手冊(cè)的 12.3.2 中斷事件請(qǐng)求序號(hào)章節(jié),獲取欲配置的中斷事件序號(hào),下圖摘抄至手冊(cè)此章節(jié)。

從上表中可以看到,外部管腳中斷 8 的序號(hào)為 8,可使用的中斷選擇寄存器為 INT_SEL0~31,INT_SEL32~37,INT_VSSEL128[8]。
如設(shè)置 INT_SEL10 = 8; 當(dāng)外部管腳中斷 8 產(chǎn)生時(shí),程序?qū)㈨憫?yīng) 8 號(hào)中斷向量;如設(shè)置INT_VSSEL128[8] = 1; 程序?qū)㈨憫?yīng) 128 號(hào)中斷向量。如將同一中斷事情請(qǐng)求序號(hào)同時(shí)設(shè)置到多個(gè)中斷選擇寄存器,當(dāng)此中斷請(qǐng)求來臨時(shí),若設(shè)置相同中斷優(yōu)先級(jí),程序?qū)⒏鶕?jù)中斷向量號(hào)編號(hào),由小至大依次響應(yīng),直至執(zhí)行完所有已配置的中斷選擇寄存器。
4
樣例代碼
4.1
代碼介紹
用戶可根據(jù)上述的工作流程編寫自己的代碼來學(xué)習(xí)驗(yàn)證該模塊,也可以直接通過華大半導(dǎo)體的網(wǎng)站下載到設(shè)備驅(qū)動(dòng)庫(Device Driver Library, DDL)的樣例代碼并使用其中的 INTC 的樣例進(jìn)行驗(yàn)證。
4.2 代碼運(yùn)行
用戶可以通過華大半導(dǎo)體的網(wǎng)站下載到 HC32F460 的 DDL 的樣例代碼(exint_nmi_swi),并配合評(píng)估用板(EV-HC32F460-LQFP100-050-V1.1)運(yùn)行相關(guān)代碼學(xué)習(xí)使用 INTC 模塊。
5
總結(jié)
以上章節(jié)簡要介紹了 HC32F460 系列的 INTC,說明了 INTC 模塊的寄存器及部分操作流程,并且演示了如何使用 INTC 樣例代碼,在實(shí)際開發(fā)中用戶可以根據(jù)自己的需要配置和使用 INTC 模塊。