打印
[信息]

STM32 M3内核寄存器

[复制链接]
301|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-5-28 15:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在用OS的时候,用到了寄存器,记录一下:

Cortex-M3 系列处理器拥有通用寄存器 R0‐R15 以及一些特殊功能寄存器。R0‐R12 是最“通用目的”的,但是绝大多数的 16 位指令只能使用 R0‐R7(低组寄存器),而 32 位的 Thumb‐2 指令则可以访问所有通用寄存器。特殊功能寄存器有预定义的功能,而且必须通过专用的指令来访问。

1)通用目的寄存器 R0-R7
R0‐R7 也被称为低组寄存器。所有指令都能访问它们。它们的字长全是 32 位,复位后的初始值是不可预料的。

2)通用目的寄存器 R8-R12
R8‐R12 也被称为高组寄存器。这是因为只有很少的 16 位 Thumb 指令能访问它们, 32位的指令则不受限制。它们也是 32 位字长,且复位后的初始值是不可预料的。

3)堆栈指针 R13
R13 是堆栈指针。在 CM3 处理器内核中共有两个堆栈指针,于是也就支持两个堆栈。当引用 R13(或写作 SP)时,你引用到的是当前正在使用的那一个,另一个必须用特殊的指令来访问(MRS,MSR 指令)。这两个堆栈指针分别是:

主堆栈指针(MSP)
这是缺省的堆栈指针,它由 OS 内核、异常服务例程以及所有需要特权访问的应用程序代码来使用。

进程堆栈指针(PSP)
用于常规的应用程序代码(不处于异常服用例程中时)。要注意的是,并不是每个应用都必须用齐两个堆栈指针。简单的应用程序只使用MSP 就够了。堆栈指针用于访问堆栈,并且 PUSH 指令和 POP 指令默认使用 SP。

4)连接寄存器 R14
R14 是连接寄存器(L R)。在一个汇编程序中,你可以把它写作 both LR 和 R14。LR 用于在调用子程序时存储返回地址。例如,当你在使用 BL(分支并连接,Branch and Link)指令时,就自动填充 LR 的值。

5)程序计数器 R15
R15 是程序计数器,在汇编代码中你也可以使用名字“PC”来访问它。

6)特殊功能寄存器组
Cortex-M3 有一个特殊功能寄存器组

1.程序状态寄存器组( PSRs 或曰 xPSR)
2.中断屏蔽寄存器组( PRIMASK, FAULTMASK,以及 BASEPRI)
3.控制寄存器( CONTROL)
它们只能被专用的 MSR 和 MRS 指令访问,而且它们也没有存储器地址。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/kxh115136/article/details/139220877

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1510

主题

14449

帖子

9

粉丝