Cortex-M3-异常与中断-向量表 s
生活随笔
收集整理的這篇文章主要介紹了
Cortex-M3-异常与中断-向量表 s
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Cortex-M3-異常與中斷
- Cortex‐M3 支持大量異常,包括 16‐4‐1=11 個系統異常,和最多 240 個外部中斷——簡稱 IRQ。具體使用了這 240 個中斷源中的多少個,則由芯片制造商決定。由外設產生的中斷信號,除了 SysTick 的之外,全都連接到 NVIC 的中斷輸入信號線。典型情況下,處理器一般支持 16 到 32 個中斷,當然也有在此之外的。
- 作為中斷功能的強化,NVIC 還有一條 NMI 輸入信號線。NMI 究竟被拿去做什么,還要視處理器的設計而定。在多數情況下,NMI 會被連接到一個看門狗定時器,有時也會是電壓監視功能塊,以便在電壓掉至危險級別后警告處理器。NMI 可以在任何時間被激活,甚至是在處理器剛剛復位之后。
- 下圖列出了 Cortex‐M3 可以支持的所有異常。有一定數量的系統異常是用于 fault 處理的,它們可以由多種錯誤條件引發。NVIC 還提供了一些 fault 狀態寄存器,以便于 fault 服務例程找出導致異常的具體原因。
?Cortex-M3-向量表 s
- 當一個發生的異常被 CM3 內核接受,對應的異常 handler 就會執行。為了決定 handler 的入口地址,CM3 使用了“向量表查表機制”。這里使用一張向量表。向量表其實是一個 WORD(32 位整數)數組,每個下標對應一種異常,該下標元素的值則是該異常 handler 的入口地址。向量表的存儲位置是可以設置的,通過 NVIC 中的一個重定位寄存器來指出向量表的地址。在復位后,該寄存器的值為 0。因此,在地址 0 處必須包含一張向量表,用于初始時的異常分配。
- 舉個例子,如果發生了異常 11(SVC),則 NVIC 會計算出偏移移量是 11x4=0x2C,然后從那里取出服務例程的入口地址并跳入。0 號異常的功能則是個另類,它并不是什么入口地址,而是給出了復位后 MSP 的初值。?
注 MSP含義:
總結
以上是生活随笔為你收集整理的Cortex-M3-异常与中断-向量表 s的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cortex-M3-栏目-文章来源
- 下一篇: Cortex-M3-复位(序列)