programmers model
Handler模式一直使用MSP,所以在handler模式下处理器会忽略SPSEL位;异常进入及返回机制会更新CONTROL寄存器。
在操作系统的环境中,推荐线程在Thread模式下运行使用PSP,内核和异常处理使用MSP。
此外,线程模式下默认使用MSP,为了切换为PSP可以:
- 使用MSR指令把CONTROL的SPSEL置1
- 或者完成一个适当的EXC_RETURN值异常返回到Thread模式
当切换堆栈指针时,软件必须在MSR指令后立即使用ISB指令。这是为了确保在ISB之后执行的指令都是用的新的堆栈指针。
CMSIS, the cortex microcontroller software interface standard
CMSIS定义了:
- 一个公共的方法去:
- 访问外设寄存器
- 定义异常向量
- 名称:
- 内核的寄存器
- 内核的异常向量
- 与设备无关的RTOS内核接口,包括一个调试通道