礼品代发网

礼品代发网

收录130107113题,礼品代发网免费搜题解答

今日已更新0道题

stm32如何跳到main软件复位-stm32 跳转到app复位

2025-11-08 05:40:45  

stm32如何跳到main软件复位-stm32 跳转到app复位

优质解答

启动时芯片会先找启动向量表,这个表在0x00000000地址。如果Bootloader没做好,芯片就会一直循环复位。要是Bootloader把APP程序烧到0x08000000地址,复位时向量表就会指向这个地址,这样芯片就跳转到APP开始执行。说白了就是Bootloader给芯片发个指令,让它别再找原来的启动代码了,直接去执行APP的代码。

你看这个流程其实分两步走,首先芯片上电会自动进入复位模式,这时候看复位寄存器里哪个位被置位了。如果是软件复位,那说明是APP主动发的指令,比如通过NVIC_SystemReset或者修改RCC_APB2PeriphResetCmd。数据手册里写着,当PCRSR寄存器第0位被写1后,芯片会在1个时钟周期后自动复位。这时候Bootloader就会检测到复位源,然后检查有没有APP烧录成功。如果APP烧录在正确的Flash区域(比如从0x08000000到0x0803FFFF),向量表就会跳转到APP的入口地址。比如STM32F103的APP入口默认是0x08000000,向量表占256字节,所以APP必须从0x08000000开始连续烧写。要是APP烧录位置不对,向量表就会出错,芯片还是会回到Bootloader。另外复位后芯片会重新配置时钟树,这部分数据手册里写着需要至少2个时钟周期让时钟稳定,才能执行后续代码。所以Bootloader在跳转前要先确保时钟正常,否则APP可能跑飞。

本题链接:

STM32复位APP软件复位