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
M3核内部寄存器基础_第1张图片


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寄存器设置
M3核内部寄存器基础_第2张图片


CONTROL寄存器设置

M3核内部寄存器基础_第3张图片



M3内部 寄存器 概览

M3核内部寄存器基础_第4张图片


原文链接:http://blog.chinaunix.net/uid-22666248-id-375184.html

你可能感兴趣的:(嵌入式)