ARM Cortex-M0 内核寄存器组

概要

      Cortex-M0处理器具有非常小的面积、低功耗和最少的代码,使开发人员能够以8位的价格实现32位的性能,从而绕过了16位的设备。处理器的超低门数使其能够部署在模拟和混合信号设备中。

M0内核框图

M0内核寄存器解释

  Cortex-M0处理器拥有R0-R15的寄存器组以及3个特殊功能寄存器。

R0-R7 低位的通用寄存器

绝大数16位的Thumb 指令只能访问这些寄存器

R8-R12 高位的通用寄存器 32位的Thumb指令可以访问R0-R12所有寄存器
SP(R13) 堆栈指针

由CONTRCL寄存器中BIT[1]控制要使用的堆栈指针

  • 0 = MSP(主堆栈指针)
  • 1 = PSP(进程堆栈指针)
LR(R14) 连接寄存器

它存储子程序、函数调用和异常的返回地址

PC(R15) 程序计数寄存器 程序运行的实时地址
PSR 程序状态字寄存器

由APSR、IPSR、EPSR三个寄存器组成,可以单独访问,也可以同时访问

APSR   BIT[31]: N 负数标志

             BIT[30]: Z 0标志

             BIT[29]: C 进位/借位标志

             BIT[28]: V 溢出标志   

EPSR   BIT[24]: T Thumb状态标志

IPSR    BIT[5:0]: 中断标志

其中APSR可读可写,其他只能读

PRIMASK 中断屏蔽寄存器 BIT[0]用于屏蔽(除NMI)所有的中断,该位置1时有效。
CONTRCL 控制寄存器 BIT[1]用于控制SP指针使用情况

     补充说明IPSR寄存器的详细解释(未写的表示保留):

BIT[5:0] Function
0 线程模式,无中断产生
2

NMI,不可屏蔽中断

3 HardFault
11

SVCall

14 PendCall
15 SysTick
16-47 IRQ0-IRQ31

相关推荐

  1. ARMv8系统寄存器-0

    2024-06-06 02:42:02       45 阅读
  2. ARM/CM3/CM4:读写内核寄存器内核特殊寄存器

    2024-06-06 02:42:02       54 阅读
  3. OpenHarmony轻量级内核-LiteOS-M

    2024-06-06 02:42:02       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 02:42:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 02:42:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 02:42:02       82 阅读
  4. Python语言-面向对象

    2024-06-06 02:42:02       91 阅读

热门阅读

  1. 1349:【例4-10】最优布线问题

    2024-06-06 02:42:02       31 阅读
  2. TypeScript算法每日一题:两数之和(167)

    2024-06-06 02:42:02       24 阅读
  3. RCE漏洞简介

    2024-06-06 02:42:02       27 阅读
  4. 昵称生成器

    2024-06-06 02:42:02       28 阅读
  5. python之collections

    2024-06-06 02:42:02       25 阅读
  6. ASP.NET Core 增加后台定时托管任务

    2024-06-06 02:42:02       29 阅读
  7. 阿里云计算之Linux目录学习笔记(三)

    2024-06-06 02:42:02       19 阅读