STM32L-Interrupts and events
1. NVIC控制器
- 45個可屏蔽中斷源(medium density devices);53個可屏蔽中斷源(medium+ density devices);56個可屏蔽中斷源(high density devices)。以上均不包含Cortex-M3 16箇中斷
- 16個可編程中斷優先級(4箇中斷優先級已被佔用)
- 低延遲異常和中斷控制
- 功耗控制
- 實現系統控制寄存器
NVIC與處理器內核相輔相成,包括了低延遲中斷處理機制和對於高延遲的中斷有着高效的處理機制所有的中斷,包括內核的中斷均由NVIC管理
2. 外部中斷/事件控制器(EXTI)中斷向量表如下(medium-density devices):
3. 喚醒事件管理外部中斷/事件控制器含有多達了23個邊緣檢測器用於產生事件/中斷請求。每一個均可單獨配置其檢測類型(事件/中斷)和觸發事件(上升緣、下降緣或上升及下降緣),並且每一個均可單獨屏蔽,pending寄存器保存着當前中斷狀態有以下主要特性:
- 每個中斷/事件都有單獨的觸發器和屏蔽器
- 每個中斷源有專用的狀態位
- 23個軟件事件/中斷請求
- 檢測的外部信號的脈衝寬度可低於APB2總線時鐘
其框架圖如下:
STM32L15XX可以通過外部事件或者內部事件來喚醒內核(WFE),喚醒事件可由以下之一產生:
- 在外設控制寄存器中使能一箇中斷(在NVIC中不使能該中斷),使能Cortex-M3系統控制寄存器中的SEVONPEND位。當MCU被WFE喚醒時,外設中斷狀態位和外設NVIC IRQ狀態位(使用NVIC 中斷狀態清除寄存器)需要清除。
- 配置一個外部或者內部EXTI爲事件模式,當MCU被WFE喚醒時,由於事件行中的狀態位沒有置位,所以不需要清除外設中斷狀態位和外設NVIC IRQ狀態位
5. 外部中斷/事件的映射關係爲了產生中斷,中斷必需被配置和使能,可以通過配置兩個觸發器寄存器爲所需要的類型和使能中斷請求(往相應的中斷屏蔽寄存器中寫入1)。當所配置的檢測事件發生時,會產生中斷請求。相應的狀態位會被置位,通過往狀態寄存器中寫1可以清除該中斷事件。爲了產生事件,事件必需被配置和使能,可以通過配置兩個觸發器寄存器爲所需要的類型和使能事件請求(往相應的事件屏蔽寄存器中寫入1)。當所配置的檢測事件發生時,會產生事件請求。相應的狀態位不會被置位中斷/事件請求均可通過軟件產生,只需要往軟件中斷/事件寄存器中寫入1即可。(1)硬件中斷可按照以下步驟配置中斷源
- 配置屏蔽寄存器(EXTI_IMR)
- 爲中斷配置觸發器寄存器(EXTI_RTSR、EXTI_FTSR)
- 配置控制NVIC IRQ映射到外部中斷控制器上的使能位和屏蔽位
(2)硬件事件可按照以下步驟配置事件源
- 配置屏蔽寄存器(EXTI_EMR)
- 爲事件配置觸發器寄存器(EXTI_RTSR、EXTI_FTSR)
(3)軟件觸發中斷/事件可按照以下步驟產生一個軟件中斷
- 配置屏蔽寄存器(EXTI_IMR和EXTI_EMR)
- 設置對應的軟件中斷寄存器的請求位(EXTI_SWIRE)
83個GPIO連接到了16個外部中斷/事件上,可見下圖
另外EXTI 映射情況如下:
- EXTI 16 連接到 PVD 輸出
- EXTI 17 連接到 RTC Alarm event
- EXTI 18 連接到 USB Device FS wakeup event
- EXTI 19 連接到 RTC Tamper 和 TimeStamp events
- EXTI 20 連接到 RTC Wakeup event
- EXTI 21 連接到 Comparator 1 wakeup event
- EXTI 22 連接到 Comparator 2 wakeup event
- EXTI 23 連接到 Comparator channel acquisition interrupt