CORTEX-M3 编程手册
1. R0-R12 通用寄存器
2. R13 MSP PSP 主栈指针 进程栈指针
R14 link register 链接寄存器
R15 PC 指针
MSP: main stack pointer 主栈指针
复位后缺省使用的栈指针,用于操作系统内核以及异常处理程序(包括中断服务程序)
PSP: process stack pointer 进程栈指针
由用户的应用程序代码使用。
栈指针的最低两位永远是0, 这意味着栈总是 4 字节对其的。
3. 特殊功能寄存器
1.程序状态寄存器PSR (APSR IPSR EPSR)
2.中断屏蔽寄存器PRIMASK, FAULMASK, BASEPRI
3.控制寄存器 CONTROL
3.1 程序状态寄存器 PSRx
APSR :应用程序状态寄存器
IPSR:中断号状态寄存器
EPSR: 执行状态寄存器
通过MRS/MSR指令,这3个PSR既可以单独访问,也可以组合访问。当使用三合一的方式访问时,应使用名字xPSR或者PSR
3.2中断屏蔽寄存器PRIMASK, FAULTMASK, BASEPRI
这三个寄存器用来控制异常的使能和禁止
PRIMASK: 只有单一位的寄存器。
value =1,表示关掉所有可屏蔽的异常,只剩下NMI和硬故障可以响应
缺省值=0,表示没有关中断
FALUTMASK:只有单一位的寄存器
value=1,只有NMI才能响应,所有其他的异常,甚至是硬故障不理睬
缺省值value=0,表示灭有关异常
BASEPRI: 最多有9bit(有表示优先级的位数决定)。它定义了被屏蔽优先级的阀
值。当它被设成某个值后,所有优先记号大于或等于此值的中断都被
关闭(优先级好越大,优先级越小)。但若被设成0,则不关闭任何中断
3.3 控制寄存器 CONTROL
控制寄存器有两个用途,其一是用于定义权限级别,其二是用于选择当前使用哪个栈指针。有两个位控制这两个用途。
CONTROL[1] 栈指针选择
0= 选择住栈指针 MSP 复位后的缺省值
1= 选择进程栈指针PSP
在线程或基础级(没有在响应异常),可以使用PSP,在处理模式
下,只允许使用MSP,所以此时不得想该位写1
CONTROL[0] 0= 特权级的线程模式
1= 用户级的线程模式
处理模式永远都是特权模式
BASEPRI寄存器设置
CONTROL寄存器设置
M3内部 寄存器 概览
阅读(1034) | 评论(0) | 转发(0) |