STM32 从APP跳入BootLoader问题

在这次项目中,程序从APP跳入BootLoader主要遇到两个问题,做个记录:

1、现象:跳入BootLoader后还没开始升级便重启

      原因:APP程序中开启了独立看门狗,当跳入BootLoader时看门狗也继续计时,但并没有重新喂狗,因此导致跳入BootLoader后软件Reset重新进入APP;同时,这个reset也会导致蓝牙BAT引脚和PWR引脚短暂掉电,与APP连接的BLE也断掉,导致升级数据传输失败的问题。

     解决办法:在BootLoader中添加喂狗程序或跳入BootLoader前把看门狗停掉(不过我开的独立看门狗暂时还没找到停掉的办法.......)

 

2、现象:从APP跳入BootLoader后,升级过程中程序死掉,打断点发现每次卡死在启动文件中的

                 B

                 ENDP

原因:跑到B ENDP一般是因为程序中发生了中断但却找不到中断入口函数,即没有写中断处理函数。排查本项目,发现APP中开启了一个IO口外部中断,但是跳入APP前没有DeInit回IO口的状态,当程序跳到BootLoader时IO口发生了外部中断但却找不到对应的处理函数因此出错。

解决办法:在APP跳入BootLoader前最好把中断都Disable掉,特别是配置了中断的IO口,记得DeInit以恢复默认状态

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章