×
单片机 > 单片机程序设计 > 详情

Cortex-M3寄存器组

发布时间:2020-06-18 发布时间:
|

1、通用目的寄存器R0~R7


         R0-R7 也被称为低组寄存器。所有指令都能访问它们。它们的字长全是 32 位,复位后的初始值是不可预料的。


2、通用目的寄存器 R8-R12


         R8-R12 也被称为高组寄存器。这是因为只有很少的 16 位 Thumb 指令能访问它们, 32 位的thumb-2 指令则不受限制。它们也是 32 位字长,且复位后的初始值是不可预料的。


3、特殊功能寄存器



程序状态寄存器:APSR, IPSR, EPSR  ---- 通过MRS/MSR 指令,这3 个PSRs 即可以单独访问,也可以组合访问(2 个组合,3 个组合都可以)。当使用三合一的方式访问时,应使用名字“xPSR”或者“PSR”。


APSR:


N:负条件码标志位,运算结果小于0,N=1, 大于等于0,N=0;


Z:零条件码标志位,运算结果为0,Z=1;


C:进位条件码标志位,运算指令产生进位(无符号加法溢出),C=1;


V:溢出条件码标志位,运算溢出(有符号加法溢出), V=1;


Q:饱和条件码标志位;


IPSR:处于线程模式时,该位域为0;在手柄模式下,该位域为当前异常的异常号。


EPSR:


T:Thumb状态, T=1,ARM状态,T=0; 


PRIMASK, FAULTMASK 和 BASEPRI:控制异常的使能和除能 



控制寄存器CONTROL:其一用于定义特权级别,其二用于选择当前使用哪个堆栈指针。



4、堆栈指针R13


R13 是堆栈指针。在 CM3 处理器内核中共有两个堆栈指针,于是也就支持两个堆栈。当引用 R13(或写作 SP)时,引用到的是当前正在使用的那一个,另一个必须用特殊的指令来访问( MRS,MSR指令)。


主堆栈指针(MSP),或写作 SP_main。这是缺省的堆栈指针,它由 OS 内核、异常服务例程以及所有需要特权访问的应用程序代码来使用。


进程堆栈指针(PSP),或写作 SP_process。用于常规的应用程序代码(不处于异常服用例程中时)。


5、连接寄存器R14


R14 是连接寄存器( LR)。在一个汇编程序中,你可以把它写作 both LR 和 R14。 LR 用于在调用子程序时存储返回地址。例如,当你在使用 BL(分支并连接, Branch and Link)指令时,就自动填充 LR的值。


6、程序计数器R15


R15 是程序计数器,在汇编代码中一般我们都都叫它的外号“ PC”。因为 CM3 内部使用了指令流水线,读 PC 时返回的值是当前指令的地址+4。

关键字:Cortex-M3  寄存器组 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机中断源的扩展方法