zoukankan      html  css  js  c++  java
  • STM32 xPortPendSVHandler说明记录

     关键点:

    1、进入PendSV前,硬件自动压栈了PSR、PC、LR、R12、R3~R0的寄存器(使用PSP指针,压入任务堆栈,即硬件自动保存“调用者保存寄存器”),对应图中的①

    2、进入PendSV后,手动保存R4-R11,对应xPortPendSVHandler函数中的stmdb r0!, {r4-r11}语句(也就是手动保存“被调用者保存寄存器”),对应图中的②

    3、切换新的TCB后,找到该TCB对应的PSP,手动弹出R4-R11,对应xPortPendSVHandler函数中的ldmia r0!, {r4-r11}语句,对应图中的③

    4、bx r14 ,异常发生时,R14中保存异常返回标志,包括返回后进入线程模式还是处理器模式、使用PSP堆栈指针还是MSP堆栈指针,当调用 bx r14指令后,硬件会知道要从异常返回,然后出栈,这个时候堆栈指针PSP已经指向了新任务堆栈的正确位置,当新任务的运行地址被出栈到PC寄存器后,新的任务也会被执行。对应图中的④

    参考博文:https://blog.csdn.net/tao475824827/article/details/105622087

  • 相关阅读:
    各种小知识
    基础技能
    st表
    有理数取余
    FFT加速高精度乘法
    unique
    离散化
    线段树复杂度分析
    楼房重建
    电脑装系统常用方法
  • 原文地址:https://www.cnblogs.com/olivertian/p/15078648.html
Copyright © 2011-2022 走看看