程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

ARM-Cortex-M4 寄存器(arm中寄存器)

balukai 2025-07-14 12:31:07 文章精选 6 ℃
  1. 寄存器介绍


包括R0-R12 的通用寄存器,一般R0-R3 用来做参数传递,R7 用来存放系统调用号。

SP(R13)为栈指针一个为MSP,一个为PSP。同一时刻只能用一个,MSP reset后默认的模式,系统中断模式时也是用的这个MSP,可以通过Control寄存器来判断当前用的是哪个

LR(R14)寄存器用来存放好函数调用执行完时的返回地址。比如A函数,在第二行调用B函数,在调用B函数时先将第四行的指令放到LR寄存器中,等B函数执行完就加载LR中的寄存器到PC中继续执行。

PC(R15) 寄存器,当前执行的指令。


PSR,PRIMASK,FAULTMASK,BASEPRI,CONTROL 这几个特殊寄存器。需要用MSR MRS 来读写。

PSR,xPSR 用来存放一些程序执行状态, 如APSR NZCVQ 算术状态位。

IPSR 低四位用来存放当前的中断号。
EPSR 用来存放一些多时钟周期指令执行时(LDR,STM),被中断打断时的下个指令。

PSR实际是一个32位的寄存器,逻辑上分成了APSR, IPSR,EPSR。


PRIMASK,FAULTMASK,BASEPRI 这三个都是和中断屏蔽相关的

PRIMASK 屏蔽所有优先级可配置的中断。

FAULTMASK 屏蔽除了NMI以外的所有中断。

BASEPRI 可以设置一个优先级,然后屏蔽所有低于这个设置的优先级的中断。


CONTROL 寄存器就三个位,

2,指示当前FPU是否在使用中,1,SP当前用的是MSP还是PSP。0,软件是否是特权模式。

Tags:

最近发表
标签列表