您的位置 首页 汽车

ARM Cortex-M3 学习笔记(3)

最近在学ARMCortex-M3,找了本号称很经典的书AnDefinitiveGuidetoTheARMCortex-M3在看。这个系列学习笔记其实就是在学习这本…

最近在学ARM Cortex-M3,找了本声称很经典的书“An Definitive Guide to The ARM Cortex-M3”在看。这个系列学习笔记其实便是在学习这本书的过程中做的读书笔记。

第三章 Cortex-M3 根底

这章的内容有不少是和第二章重复的。重复的部分这儿就不再提了。

仓库

Cortex-M3 的仓库是倒生的,实栈顶。也便是R13指向最终一次压入仓库的内容。
下面是个简略的比如:
PUSH {R0} ; *(–R13)=R0。R13是long*的指针
POP {R0} ; R0= *R13++

PUSH 和 POP 能够一次操作多个寄存器:
subroutine_1
PUSH {R0-R7, R12, R14} ; 保存寄存器列表
… ; 碑文处理
POP {R0-R7, R12, R14} ; 康复寄存器列表
BX R14 ; 返回到主调函数
上面的比如中顺带也用到了R14。因而就不独自解说R14了。

特别功用寄存器组

拜访特别功用寄存器需要用专用指令:
MRS , ;读特别功用寄存器的值到通用寄存器
MSR , ;写通用寄存器的值到特别功用寄存器

程序状况寄存器在其内部又被分为三个子状况寄存器:
 应用程序PSR(APSR)
 中止号PSR(IPSR)
 碑文PSR(EPSR)
参看下图:

图 6 Cortex-M3中的程序状况寄存器(xPSR)

PRIMASK,FAULTMASK和BASEPRI 操控中止和反常的舱位和屏蔽
PRIMASK = 1后只要NMI和硬fault能够呼应,默以为0
FAULTMASK = 1后只要NMI和硬fault能够呼应,默以为0
BASEPRI:优先级号大于等于此值的中止都被屏蔽
只要在特权级下,才答应拜访这3个寄存器。

操控寄存器(CONTROL)
CONTROL[0]=1,用户级的线程形式
CONTROL[0]=0,特权级的线程形式
CONTROL[1]=1,挑选运用MSP
CONTROL[1]=0,挑选运用PSP

中止向量表

默许的中止向量表在地址0处,使用NV%&&&&&%的重定位寄存器能够将其重定位。
别的,中止向量表的第一个向量的方位寄存的是MSP的初始值。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/264186.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部