关于STM32主堆栈指针(MSP)与进程堆栈指针(PSP)

2019-07-14 16:28发布

我正在阅读STM32编程手册和“ 第18页 ”的某处,我看到了这两种堆栈指针。我一直认为只有一个堆栈,因此只有一个堆栈指针存在于MCU中,现在我对这些指针的含义感到困惑,主题和每个指针之间的差异用于什么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
ZXH22770
2019-07-15 02:26
你是正确的,在皮质m(你的stm32是,虽然我不能说哪个变体,除非你指定一个部分)有一个活动堆栈指针r13,但这可以是MSP或PSP。
两个原因是使用户能够轻松实现多任务“操作系统”。
我的想法是,PSP各个任务使用或进程堆栈指针,内核使用MSP。
发生异常时,堆栈帧被推送到当前活动的堆栈指针,然后切换为使用MSP异常处理程序。在多任务系统中,如果调度程序导致异常,则此时您将更改PSP指向下一个任务的堆栈指针的位置,并从异常返回。然后,新堆栈指针的卸载将执行返回到下一个任务。

一周热门 更多>