ARM Cortex-M3 学习笔记(3)

ARM Cortex-M3 学习笔记(3)

最近在学 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_1PUSH {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 可以响应,默认为 0FAULTMASK = 1 后只有 NMI 和硬 fault 可以响应,默认 为 0BASEPRI:优先级号大于等于此值的中断都被屏蔽只有在特权级下,才允 许访问这 3 个寄存器。控制寄存器(CONTROL)CONTROL[0]=1,用户级的 线程模式 CONTROL[0]=0,特权级的线程模式 CONTROL[1]=1,选择使用 MSPCONTROL[1]=0,选择使用 PSP

中断向量表默认的中断向量表在地址 0 处,利用 NVIC 的重定位寄存器可以 将其重定位。另外,中断向量表的第一个向量的位置存放的是 MSP 的初始值。

tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4