0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Cortex-M3寄存器的详细资料汇总

GReq_mcu168 来源:博客园 作者:博客园 2020-09-14 11:51 次阅读

1.寄存器

CM3拥有R0~R15通用寄存器和一些特殊功能寄存器

R0~R12这些通用寄存器,复位初始值都是不可预料的

2.CM3有R0到R15的通用寄存器组

注:绝大部分的16位thumb只能访问R0到R7,而32位thumb-2可以访问全部寄存器

3.特殊功能寄存器

3.1程序状态寄存器组(应用程序PSR+中断号PSR+执行PSR)

3.2中断屏蔽寄存器组:用于控制异常的除能和使能

3.3控制寄存器:用于定义特权级别和当前使用哪个堆栈指针

4.操作模式和特权级别:

两种操作模式(处理器模式):Handler模式和线程模式(用于区分异常服务例程的代码和普通程序的代码)

两种特权等级:特权级和用户级(是指在硬件层面上对存储器访问权限的设置)

注:CM3在运行主程序(即线程模式)可以使用特权级别和用户级别;但是异常服务例程(即handler模式)只能使用特权级别。当处于线程+用户模式时一些访问权限将被禁止

将代码区分成用户级和特权级,有利于程序架构的稳定,如某一个用户代码出问题,不会使其成为害群之狗,因为用户级别的代码是禁止对一些要害寄存器操作的。

5.异常处理

5.1CONTROL[0]=0;

5.2CONTROL[0]=1;

CONTROL[0]只有在特权级别下可以访问,若在用户级别想访问先通过"系统服务呼叫指令(SVC)"来触发SVC异常,然后在该异常的服务例程中可以修改CONTROL[0]。

6.下面是各操作模式的转换

7.异常和中断

可以有11个系统异常和最多240个外部中断(IRQ),具体芯片使用了多少要看芯片制造厂商

作为中断功能的强化,NVIC 还有一条NMI输入信号线,具体做什么由芯片制造商决定,NMI(not masked interrupted)

8.向量表:当一个异常被CM3内核接受。对应的异常Handler就会执行,向量表用来决定Handler的入口地址。

9.CM3的双堆栈:主堆栈(MSP)和进程堆栈(PSP)。是由CONTROL[1]控制的。

10.复位序列:

先从0X00地址取出MSP的值再从0x04地址取出PC的初始值,0X04处存的值是复位向量,而不是跳转指令。

此处CM3与ARM单片机不同。以前ARM都是从0X00地址开始执行第一条指令,一般第一条指令都是跳转指令

11.MSP及PC初始化的一个例程

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5346

    浏览量

    120488
  • Cortex-M3
    +关注

    关注

    9

    文章

    270

    浏览量

    59499

原文标题:Cortex-M3寄存器等基础知识

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    cortex-m3中如何将AHB-AP 数据读/写寄存器中的内容写入RAM中?

    如题,我想自己编写程序,通过JTAG口将bin文件写入cortex-m3的RAM中,查看了下《cortex-m3技术参考手册》,里面提到可以通过AHB-AP寄存器对内部RAM进行读写。在AHB-AP
    发表于 04-26 14:15

    Cortex-M3处理拥有哪些通用寄存器及特殊功能寄存器

    Cortex-M3处理拥有哪些通用寄存器及特殊功能寄存器呢?分别有哪些呢?
    发表于 11-25 09:23

    Cortex-M3 技术参考手册

    第 1 章概述本章描述了 Cortex-M3 处理的组件以及处理的指令集。第 2 章编程模型(programmer’s model)本章描述了 Cortex-M3
    发表于 07-08 16:40 112次下载

    基于Cortex-M3的MP3播放设计

    基于Cortex-M3的MP3播放设计.
    发表于 01-22 14:26 0次下载

    Cortex-M3权威指南中文版资料

    Cortex-M3权威指南中文版资料
    发表于 10-29 09:45 0次下载
    <b class='flag-5'>Cortex-M3</b>权威指南中文版<b class='flag-5'>资料</b>

    LPC17XX系列Cortex-M3微控制寄存器相关资料详细说明

    本文档的主要内容详细介绍的是LPC17XX系列Cortex - M3微控制寄存器相关资料
    发表于 04-12 08:00 23次下载
    LPC17XX系列<b class='flag-5'>Cortex-M3</b>微控制<b class='flag-5'>器</b>的<b class='flag-5'>寄存器</b>相关<b class='flag-5'>资料</b><b class='flag-5'>详细</b>说明

    寄存器的名称和地址的映射详细资料分析

    本文档的主要内容详细介绍的是寄存器的名称和地址的映射详细资料分析。首先要清楚的一点,所有操作,最终目的都是操作寄存器一,对比51单片机和STM32对
    发表于 07-01 17:42 1次下载
    <b class='flag-5'>寄存器</b>的名称和地址的映射<b class='flag-5'>详细资料</b>分析

    DSP28335 ACD寄存器详细资料说明

    本文档的主要内容详细介绍的是DSP28335 ACD寄存器详细资料说明。
    发表于 05-27 13:43 4次下载
    DSP28335 ACD<b class='flag-5'>寄存器</b>的<b class='flag-5'>详细资料</b>说明

    ARM Cortex-M3 内核的不同功能模块

    Cortex-M3内核,内部的数据路径为32位,寄存器为32位,存储接口也是32位。Cortex-M3采用了 哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问分开
    发表于 07-08 15:18 9次下载
    ARM <b class='flag-5'>Cortex-M3</b> 内核的不同功能模块

    Cortex-M3寄存器资料下载

    电子发烧友网为你提供Cortex-M3寄存器资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文
    发表于 04-13 08:47 2次下载
    <b class='flag-5'>Cortex-M3</b><b class='flag-5'>寄存器</b>组<b class='flag-5'>资料</b>下载

    Cortex-M3处理内核与基于Cortex-M3的MCU关系

    Cortex-M3Cortex-M3简述Cortex-M3是ARM公司设计的ARMv7架构下Cortex系列的首秀,其目的是为了让32位处理加入单片机市场,
    发表于 11-05 18:35 8次下载
    <b class='flag-5'>Cortex-M3</b>处理<b class='flag-5'>器</b>内核与基于<b class='flag-5'>Cortex-M3</b>的MCU关系

    ARM Cortex-M3系统设计与实现

    STM32 MCU系统时钟树 1.4 Cortex-M3简介2. 通用并行GPIO口 2.1 GPIO结构及寄存器说明 2.2 GPIO设计实例...
    发表于 11-05 19:50 22次下载
    ARM <b class='flag-5'>Cortex-M3</b>系统设计与实现

    Cortex-M3 内部寄存器

    ;R13R13,SP,堆栈指针;Cortex-M3有两个堆栈指针,它们是Banked,任一时刻只能使用其中一个;当引用R13/SP时,引用的是当前正在使用的那一个,另一个必须使用MRS/MSR指令来访...
    发表于 11-26 16:21 39次下载
    <b class='flag-5'>Cortex-M3</b> 内部<b class='flag-5'>寄存器</b>

    Cortex-M3寄存器等基础知识

    Cortex-M3拥有R0~R15通用寄存器和一些特殊功能寄存器。R0~R12这些通用寄存器,复位初始值都是不可预料的。
    发表于 02-08 16:28 2次下载
    <b class='flag-5'>Cortex-M3</b><b class='flag-5'>寄存器</b>等基础知识

    Cortex-M3入门指南(二):寄存器

    第一行是偏移地址。偏移地址指明了这个寄存器相对于外设寄存器区段的位置,从起始地址表中我们可以知道 GPIOA 寄存器区段的起始地址是 0x4001_0800,而 GPIO_BSRR 的偏移地址为
    的头像 发表于 05-31 17:36 1681次阅读
    <b class='flag-5'>Cortex-M3</b>入门指南(二):<b class='flag-5'>寄存器</b>