Cortex-M3中的寄存器组
生活随笔
收集整理的這篇文章主要介紹了
Cortex-M3中的寄存器组
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 1 Cortex-M3中的寄存器組
- 1.1 寄存器組
- 1.2 MSP和PSP
- 1.3 Cortex-M3中的堆棧
- 1.4 程序狀態(tài)寄存器
- 1.5 異常屏蔽寄存器
1 Cortex-M3中的寄存器組
1.1 寄存器組
(上圖中說雙堆棧寄存器R13基于特權(quán)級是錯誤的)。
這些寄存器中:
- R15指明了當前任務(wù)執(zhí)行的指令位置。
- R13指明當前任務(wù)所用的堆棧位置。
- R0~R3主要用于程序調(diào)用時,參數(shù)的傳遞;執(zhí)行程序時局部變量的存儲。
1.2 MSP和PSP
對于上圖,除了簡單了解其有R0~R15外,還要特別注意雙堆棧寄存器R13,用于實現(xiàn)中斷/異常所用的棧與任務(wù)所用的棧相分離,互不干擾。簡單來說,一般在RTOS中,異常/中斷發(fā)生時,硬件自動切換到MSP指向的堆棧來配合執(zhí)行相應的處理程序,而退出后,自動切換到PSP指向的堆棧空間再執(zhí)行任務(wù)代碼(需要我們通過改變LR寄存器的值來完成)。
PSP和MSP重要知識:
對于一般的RTOS來說,當處理器復位之后,使用MSP。即main函數(shù)剛開始執(zhí)行時使用MSP,當發(fā)生第一次任務(wù)切換后,任務(wù)就使用PSP,而異常處理程序依然使用MSP。如何從MSP切換到PSP,需要我們在異常處理程序中更改EXC_RETURN的值。
1.3 Cortex-M3中的堆棧
Cortex-M3使用的是向下生長的滿棧模型,采用雙堆棧機制。
每次壓棧,堆棧地址遞減。且堆棧指針SP(MSP/PSP)總是指向最后壓棧的單元,不是下一個空閑的堆棧單元。這就是所謂的滿棧。
壓棧操作:
出棧操作:
1.4 程序狀態(tài)寄存器
1.5 異常屏蔽寄存器
參考資料:
總結(jié)
以上是生活随笔為你收集整理的Cortex-M3中的寄存器组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cortex-M3的工作模式和特权级别
- 下一篇: Cortex-M3中的存储器映射