Cortex-M3 在C中上报入栈的寄存器和各fault状态寄存器
摘要:因为在标准C语音中是不能获取SP指针的。因而,如果想通过C代码来获取入栈的寄存器值,需要配合一小段汇编代码来获取当前的SP值,然后再把这个SP值以参数形式传送给C代码,最后以指针的形式把栈中的各寄存器值输出,同时也可以输出一些想要的各种状态寄存器值。如下: Keil环境汇编封皮: C服务程序,输入为
阅读全文
posted @
2019-07-31 16:01
uTank
阅读(1110)
推荐(1)
Cortex-M3 双堆栈指针(MSP&PSP)
摘要:【双堆栈指针(MSP&PSP)】 Cortex-M3内核中有两个堆栈指针(MSP & PSP),但任何时刻只能使用到其中一个。 复位后处于线程模式特权级,默认使用MSP。 通过SP访问到的是正在使用的那个指针,可以通过MSR/MRS指令访问指定的堆栈指针。 通过设置CONTROL寄存器的bit[1]
阅读全文
posted @
2019-07-29 15:33
uTank
阅读(15115)
推荐(2)
Cortex-M3 异常返回值EXC_RETURN
摘要:【EXC_RETURN】 在进入异常服务程序后,硬件自动更新LR的值为特殊的EXC_RETURN。当程序从异常服务程序返回,把这个EXC_RETURN值送往PC时,就会启动处理器的异常中断返回序列。因为LR的值EXC_RETURN是由硬件自动设置的,所以只要没有特殊需求,就不要改动它。RETURN的
阅读全文
posted @
2019-07-29 11:49
uTank
阅读(4232)
推荐(1)
Cortex-M3 异常中断响应与返回
摘要:【异常/中断响应】Cortex-M3的异常/中断响应序列包括: 入栈:把8个寄存器的值压入栈。 取向量:从向量表中找出对应的服务程序入口地址。 更新寄存器:更新堆栈指针SP,更新连接寄存器LR,更新程序计数器PC 【入栈】响应异常的第一个行动,就是自动保存现场的必要部分:依次把xPSR、PC、LR、
阅读全文
posted @
2019-07-26 17:23
uTank
阅读(2882)
推荐(0)
Cortex-M3 操作模式与特权等级
摘要:Cortex-M3支持2个模式(Handler模式、线程模式)和2个特权等级(特权级、非特权级)。 当处理器处在线程模式时,既可以使用特权级,也可以使用非特权级。 当处理器处在Handler模式时,总是特权级的。 在复位后,处理器进入“线程模式+特权级”。 在“线程模式+非特权级(用户级)”下,禁止
阅读全文
posted @
2019-07-26 11:31
uTank
阅读(5122)
推荐(0)
Cortex-M3 R0~R15寄存器组 & 特殊功能寄存器组
摘要:【R0~R15寄存器组】 Cortex-M3处理器拥有R0~R15的寄存器组,如: 【R0~R12通用寄存器】R0~R12都是32位通用寄存器,用于数据操作。其中: R0~R7为低组寄存器,所有的指令都可以访问。 R8~R12为高组寄存器,只有32位Thumb2指令和很少的16位Thumb指令能访问
阅读全文
posted @
2019-07-24 15:20
uTank
阅读(12129)
推荐(3)