您的位置:首页 > 其它

STM32之系统重启

2015-07-06 11:36 183 查看
对于STM32重启,可以通过配置中断向量表,然后跳转初始化代码,也可以写寄存器重启。

1.跳转

int boot_jump(u32 Map, u32 Reset)

    {                

        __set_MSP(Map);

        ((void(*)())(Reset))();

    }

addr = APP_ADDR0;

    base = addr > NVIC_VectTab_FLASH?     NVIC_VectTab_FLASH:NVIC_VectTab_RAM;

    offset = addr - base;

    NVIC_SetVectorTable(base, offset);

    map = *((u32* )addr);

    reset = *((u32*)(addr + 4));

    boot_jump(map,reset);

2.软复位代码

__asm void SystemReset(void)

{

 MOV R0, #1           //;

 MSR FAULTMASK, R0    //; 清除FAULTMASK 禁止一切中断产生

 LDR R0, =0xE000ED0C  //;

 LDR R1, =0x05FA0004  //;

 STR R1, [R0]         //; 系统软件复位   

 

deadloop

    B deadloop        //; 死循环使程序运行不到下面的代码

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: