Cortex-M3中的NVIC概覽

一、CM3及STM32中斷介紹。

1.CM3內核支持256箇中斷,其中包含了16個內核中斷和240和外部中斷,並且具有256級可編程的中斷設置。

2.STM32一共使用了84箇中斷,包含16個內核中斷和68個可屏蔽中斷,具有16級可編程的中斷優先級。

3.STM32F103系列上僅使用了60個可屏蔽中斷,V3.5標準外設庫中通過枚舉類型IRQn將內核中斷(中斷號小於0)和可屏蔽中斷(中斷號大於定於0)包含起來。(如下圖)

二、分組和優先級

1.CM3內核通過AIRCR寄存器的[10:8]來描述優先級分組,也即是CM3最多可以有8鍾分組方式。但是STM32F1只採用了其中的5種分組方式(分組號爲7、6、5、4、3),至於爲什麼分組號由7~3是因爲:優先級分組寄存器是一個從 LSB 左邊開始的值。

2.每個外部中斷都有一個對應的優先級寄存器,每個寄存器佔用 8 位,但是允許最少只使用最高 3 位。 4 個相臨的優先級寄存器拼成一個 32 位寄存器。根據優先級組設置,優先級可以被分爲高低兩個位段,分別是搶佔優先級和亞優先級。優先級寄存器都可以按字節訪問,當然也可以按半字/字來訪問。有意義的優先級寄存器數目由芯片廠商實現的中斷數目決定。

3.如STM32F1系列則使用了AIR_CR[10:8]來作爲分組標識(分別爲0x300 、0x400 、0x500 、0x600 、0x700),IP[7:4]中的低8位中的4位用來設置搶佔和響應優先級(且爲高4位,LSB),所以通過分組標識的不同分別有如下幾種組合方式。

4.將IP算出的優先級號寫入到對應中斷號對應的IP寄存器中即可完成對應中斷優先級的設定。

5.通過32bit類型的ISER寄存器使能對應的中斷號,即可完成對應中斷的使能。(STM32F1系列只是用了60個可屏蔽中斷,所以僅用2個ISER寄存器即可全部標識所有中斷。)

6.同樣通過32bit類型的ICER寄存器Q去使能對應的中斷號,即可完成對應中斷的去使能。

7.所有 NVIC 的中斷控制/狀態寄存器都只能在特權級下訪問。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章