第三讲_Cortex-M3基础.pdf

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三讲_Cortex-M3基础

第三讲 Cortex-M3基础 Cortex-M3基础  Cortex‐M3 是一个32 位处理器内核。内部的数据是32 位的, 寄存器是32 位的,存储器接口也是32 位的。  CM3 采用了哈佛结构,拥有独立的指令总线和数据总线, 可以让取指与数据访问并行。这样一来数据访问不再占用 指令总线,从而提升了性能。 内容提要  寄存器组  异常和中断  操作模式和特权极别  存储器映射  总线接口  指令集  复位 3.1 寄存器组  Cortex‐M3 处理器拥有R0‐R15 的寄存器组。 R0-R12:通用寄存器  R0‐R12 都是32 位通用寄存器,用于数据操作。但是注意: 绝大多数Thumb 指令只能访问R0‐R7。 R13: 堆栈指针  Cortex‐M3 拥有两个堆栈指针,任一时刻只能使用其中的 一个。  主堆栈指针(MSP):复位后缺省使用的堆栈指针,用 于操作系统内核以及异常处理。  进程堆栈指针(PSP):由用户的应用程序代码使用。 R14 :连接寄存器  当调用一个子程序时,为了减少访问内存的次数,由R14 存储返回地址,把返回地址直接存储在寄存器中,这与其 他大多数其它处理器都不一样。  只有1 级子程序调用的代码无需访问内存,从而提高了子 程序调用的效率。如果多于1 级,则需要把前一级的R14 值压到堆栈里。  在ARM编程时,应尽量只使用寄存器保存中间结果,迫不 得以时才访问内存。 R15 :程序计数寄存器(PC )  指向当前的程序地址。  如果修改它的值,就能改变程序的执行。 寄存器 特殊功能寄存器  Cortex‐M3 还在内核上搭载了若干特殊功能寄存器,包 括:  程序状态字寄存器组PSRs;  中断屏蔽寄存器组PRIMASK, FAULTMASK, BASEPRI;  控制寄存器CONTROL。 程序状态寄存器(PSRs 或xPSR )  程序状态寄存器在其内部又被分为三个子状态寄存器:  应用程序PSR (APSR)  中断号PSR (IPSR)  执行PSR (EPSR)  这3 个寄存器即可以单独访问,也可以组合访问 (2 个组 合,3 个组合都可以),当使用三合一的方式访问时,应 使用名字“xPSR”或者“PSRs” 。 中断屏蔽寄存器组  PRIMASK :屏蔽所有的中断—— 当然了,不可屏蔽NMI。  FAULTMASK:屏蔽所有的fault——NMI 依然不受影响  BASEPRI :屏蔽所有优先级不高于某个具体数值的中断。 控制寄存器(CONTROL )  控制寄存器用于还用于定义特权级别和堆栈指针的选择。 特殊功能寄存器操作指令  只能被专用的MSR 和MRS 指令访问。  MRS gp_reg, special_reg 功能:读特殊功能寄存器的值到通用寄存器。  MSR special_reg, gp_reg 功能:写通用寄存器的值到特殊功能寄存器。 3.2 异常与中断  在ARM 编程领域中,凡是打断程序顺序执行的事件,都 被称为异常(exception)。  除了外部中断外,当有指令执行了“非法操作”,或者访 问被禁的内存区间,因各种错误产生的fault ,以及不可屏 蔽中断发生时,都会打断程序的执行,这些情况统称为异 常。在不严格的情况下,异常与中断也可以混用。  程序代码也可以主动请求进入异常状态的(常用于系统调 用)。  CM3 的所有中断机制都由NVIC 实现。除了支持240 个外 中断之外,NVIC 还支持16‐4‐1=11 个内部异常源。 

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档