(1)通用寄存器R0~R7:为低组寄存器,所有指令都可以访问,大小为32位,复位后初始值不定; (2)通用寄存器R8~R12:为高组寄存器,只有部分的16位Thumb指令可以访问,32位Thumb-2指令不受限制,大小为32位,复位后初始值仍然不定; (3)R13为堆栈指针(即SP,这个应该都知道了),CM4内核和CM3内核是一样的,有两个堆栈指针(注意都是共用R13,只不过不能同时访问罢了,引用R13即引用当前使用的指针(MSP or PSP))。其中MSP(主堆栈指针)即默认的堆栈指针,一般由OS内核、异常服务例程以及所有需要特权访问的应用程序代码使用;而PSP(进程堆栈指针)用于常规的应用代码(即不处于异常服务例程中时)。 (4)R14为连接寄存器(即LR),主要作用就是保存子程序的返回地址,以便在执行完子程序时恢复现场; (5)R15为程序计数器(即PC,这个如果不知道可以放弃编程了,哈哈),可以在程序里直接插入PC以跳转到相应的地址(不过不更新LR),所以功能大大滴有用。另外由于CortexM系列采用指令流水线技术,所以如果读PC返回值的话应该是当前指令的地址+4的,这个需要注意一下。
|