Cortex‐M3/M4/M7内核寄存器组介绍

本文详细介绍了Cortex-M3/M4/M7内核中的R0-R15寄存器及其功能,包括通用寄存器、堆栈指针、链接寄存器和程序计数器,以及特殊功能寄存器如PSRS和中断屏蔽寄存器在RTOS开发中的应用,帮助理解RTOS中线程切换的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0 前言

在进行Cortex‐M3/M4/M7内核MCU的RTOS开发过程中,我们经常会经常进行“线程切换”这个操作,与“线程切换”紧密结合的就是内核寄存器R0-R15和特殊功能寄存器,本文将详细介绍Cortex‐M3/M4/M7内核寄存器R0-R15和特殊功能寄存器,为学习和使用RTOS打下基础。

1 Cortex‐M3/M4/M7内核寄存器组介绍

1.1 R0-R15寄存器总览

Cortex‐M3/M4/M7内核均拥有R0-R15这16个寄存器。
(1)R0-R12:通用寄存器
(2)R13:堆栈指针,它包含2个堆栈指针,一个是主堆栈指针(MSP),一个是进程堆栈指针(PSP)。在同一时刻对外表现为主堆栈指针或进程堆栈指针,只有一个能够看到,也就是所谓的“banked”寄存器。
(3)R14:链接寄存器(LR)
(4)R15:程序计数器(PC)
R0-R15的寄存器组可以用下面的图片表示:
在这里插入图片描述

1.2 R0-R12通用寄存器

R0-R12寄存器大小均为32位,用来实现最通用的数据操作,例如作为中间变量给目标变量赋值。其中R0-R7又被称为低组寄存器,而R8-R12又被称为高组寄存器。
其中R0-R7能够被绝大多数的16位 Thumb 指令访问,而32位的Thumb‐2指令可以访问所有通用寄存器。

1.3 R13堆栈指针寄存器

为了支持操作系统,Cortex‐M3/M4/M7内核拥有2个堆栈指针,然而任意时刻对外表现都是其中的1个,这样的寄存器又被称为“banked”寄存器。R13堆栈指针寄存包含以下2个堆栈指针:
(1)主堆栈指针(MSP):MCU复位以后默认使用的堆栈指针,用于操作系统内核及异常(包含中断)处理例程。
(2)进程堆栈指针(PSP):由用户的应用程序代码使用。
注:
堆栈指针的低2位永远是0,因此能够保证堆栈指针永远是4字节对齐的。堆栈指针永远指向栈顶

1.4 R14链接寄存器(LR)

R14链接寄存器作用有以下2个方面:
(1)当我们调用其它函数时,R14链接寄存器被设置为函数返回地址
(2)发生异常或中断时,R14链接寄存器被设置为需要返回的地址

1.5 R15程序计数器(PC)

该寄存器的值永远是下一个执行的指令的地址。如果修改PC的值就能改变程序执行的顺序,实现一些高级操作。

1.6 特殊功能寄存器

Cortex‐M3/M4/M7内核除了R0-R15之外还有若干特殊功能寄存器,包括程序状态字寄存器组(PSRS)、中断屏蔽寄存器组( PRIMASK, FAULTMASK, BASEPRI)、控制寄存器(CONTROL)。这些寄存器在RTOS的源码内经常可以看到,比如中断屏蔽寄存器组就常见于临界段的保护。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NW嵌入式开发

感谢您的支持,让我们一起进步!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值