当前位置:   article > 正文

stm32 程序复位和跳转_stm32跳转到指定地址运行

stm32跳转到指定地址运行

一、设置内核控制寄存器 core control register

      __set_CONTROL(0);

二、关闭所有中断

 __disable_interrupt(); 

三、复位

    在应用中断和复位控制寄存器中写入0x5fa0004

   代码:  *((volatile uint32_t *)0xE000ED0C) = 0x05fa0004; 

四、跳转

   1、获取要跳转地址的栈顶地址

   SpInitVal = *(uint32_t *)dwJumpAddr;
   2、获取要跳转地址+4地址位置的中断向量地址
        JumpAddr = *(uint32_t *)( dwJumpAddr + 4); 

   3、将新的栈顶地址放入MSP
        __set_MSP(SpInitVal); //设置SP.,堆栈栈顶地址

   4、将新的中断向量地址赋值给函数指针
        pFun = (void (*)(void))JumpAddr; //生成跳转函数.将复位中断向量地址做为函数指针

  5、执行函数,实现跳转
        (*pFun) (); //执行函数,实现跳转.不再返回.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/56764
推荐阅读
相关标签
  

闽ICP备14008679号