参考文章:
https://club.rt-thread.org/ask/question/425321.html%20https:/club.rt-thread.org/ask/question/eab19452583b5959.html
https://club.rt-thread.org/ask/question/eab19452583b5959.html
-
关闭全部中断,并且清除中断标志位,防止有的中断存在中断挂起状态;
对于STM32芯片,如果使用HAL库,则调用HAL_DeInit 和 HAL_RCC_DeInit即可。 -
如果bootloader程序使用操作系统,在设置栈指针时需要注意当前使用的指针时MSP还是PSP,有PSP切换到MSP可以通过触发SVC异常,就相当于进行一次上下文切换,只不过切换到的是APP程序而不是下一个任务。【还没有做过,先记录一下,有机会再实践一下】
-
如果当前处在特权模式下,可以直接使用__set_CONTROL(0)实现PSP到MSP的切换。
贴一张大佬的示例代码,以备不时之需(侵删)
来自https://club.rt-thread.org/ask/question/eab19452583b5959.html