Cortex_M3寄存器组概述

寄存器组

在这里插入图片描述

  1. R0—R12:通用寄存器

R0—R12都是32位的通用寄存器,用于数据操作。

  1. R13:堆栈指针寄存器(sp)

Cortex-M3拥有两个堆栈指针,但是他们是banked,因此任意时刻只能使用其中一个。
主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括终端服务)。
进程堆栈指针(PSP):由用户代码使用。
由于堆栈指针总是4字节对齐,所以堆栈指针的最低两位永远是0.
其最典型的应用就是在数据处理之前先保存寄存器的值,再在处理任务完成后从中恢复先前保护的值。
在这里插入图片描述

  1. R14:连接寄存器(LR)

当呼叫一个子程序时,由R14存储返回地址

  1. R15:程序计数寄存器(PC)

指向当前的程序地址,若改变它的值,就会改变程序的执行流;

  1. 特殊功能寄存器

此外Cortex-M3还在内核水平上搭载了若干特殊功能寄存器:
程序状态字寄存器组(PSRs)
中断屏蔽寄存器组(PRIMASK,FAULTMASK,BASEPRI)
控制寄存器(CONTROL)
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

对于时间关键PRIMASK和BASEPRI对于暂时关闭中断十分重要。而FAULTMASK则可以被OS用于暂时关闭fault处理机能,主要用在系统崩溃时,此时会有一大堆faults,系统处理后事时,不需要再去响应这个faults。

控制寄存器(CONTROL):控制寄存器用于定义特权级别,还用于选择当前使用哪个堆栈指针。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43704402/article/details/114915237