指针是什么意思?
pointer,点,指向某个点,指向某个位置,相当于快递地址。本质是一个地址,想要的数据就在这个地址上。
-
通用寄存器:R0-R12
R0-R12 32位通用寄存器
R0-R7 低寄存器
R8-R12 高寄存器,不能被16位指令访问
-
栈指针:Stack Pointer (R13)
忽略 bit[1:0] 的值,即自动 4字节 32 位对齐。
CONTROL bit[1] 指示使用的栈
0= Main Stack Pointer (MSP). 默认值
1=Process Stack Pointer (PSP).
复位后 MSP = 0x00000000。
-
链接寄存器:Link Register (R14)
为 子程序、函数调用、异常 保留返回信息,即 PC 的值。
复位后 LR = 0xFFFFFFFF。
-
程序计数器:Program Counter (R15)
当前程序地址。
该寄存器 bit[0] 始终为 0,即 2字节 16 位对齐。
复位后处理器赋值 PC = reset vector,@ 0x00000004
reset vector bit[0] 将赋值到 EPSR T-bit,bit[0] 必须是 1(指令集状态)。
-
程序状态寄存器:Program Status Register
有三种 Application, Interrupt, Execution, APSR, IPSR, ESPR.
使用 MSR 写, MRS 读。
应用程序状态寄存器:APSR
【31】N 负号标志。0,结果为正或大于0;1,结果为负或小于0。
【30】Z 0 标志。0,结果为非0;1,结果为0。
【29】C 进位、借位标志。0,没有进位或借位;1,有进位或借位。
【28】V 溢出标志。0,没有溢出;1,有溢出。
【27】Q Saturation flag。不会
【26:0】Reserved
中断程序状态标志位:IPSR
【31:9】Reserved
【8:0】ISR_NUMBER。Interrupt Service Routine。
0 = Thread mode
1 = Reserved
2 = NMI
3 = HardFault
4 = MemManage
5 = BusFault
6 = UsageFault
7 - 10 = Reserved
11 = SVCall
12 = Reserved for Debug
13 = Reserved
14 = PendSV
15 = SysTick
16 = IRQ0
...
15 + n = IRQ(n-1) n = (1, 240)
执行程序状态寄存器:EPSR
。。。不会
-
异常屏蔽寄存器,优先级屏蔽寄存器:PRIMASK
-
异常屏蔽寄存器,错误屏蔽寄存器:FAULTMASK
-
异常屏蔽寄存器,低优先级屏蔽寄存器:BASEPRI
-
控制寄存器:CONTROL