JudeScorpio 发表于 2018-3-12 10:51:35

STM32f1 bootloader与休眠唤醒

编写程序遇见如下问题,单独编写休眠唤醒程序,采用standby与stop模式 外部高电平中断,均可以正常唤醒。但是前面加入bootloader后,则无法唤醒。

是否为boot与app的中断向量表发生过偏移导致?

下一步预计准备 在boot中编写中断唤醒程序,APP的睡眠设置 将中断向量进行偏移至BOOT中,不知是否可以?

JudeScorpio 发表于 2018-3-12 10:52:46

单独的boot也是可以正常启动

发表于 2018-3-12 11:08:46

唤醒后是直接复位吗?复位以后,boot程序应该跳转到应用程序。应用程序是否有重新配置中断向量?可以在boot加串口输出,看一下是不是正常运行。

toofree 发表于 2018-3-12 12:32:26

standby唤醒后,应该是相当于复位。
stop唤醒后,应该是可以接着执行程序的吧。不同的是,唤醒后系统时钟变为HSI,如果使用了其它系统时钟,需要重新配置。

xmshao 发表于 2018-3-12 16:32:39

首先你要保证你运行完IAP后进入APP时程序运行时正常的,否则后续休眠、唤醒的正常运行
就如镜中花水中月了。

跳进APP时,不再有来自IAP的中断请求【含未处理的中断请求】;VECTOR矢量要配置正确;相应的用于唤醒的中断或事件做好正确配置;

butterflyspring 发表于 2018-3-12 16:38:21

来点干货..AN4657-STM32Cube_IAP_using_UART....首先统一一下叫法,MCU自带的,叫bootloader,如果你是在user flash加上自己的启动软件,那个在stm32里面,叫IAP.如果你是用IAP,那你直接参考AN4657就好了,中断向量是要变化的,偏移一下就好.具体.......自己看看例程咯..:lol

123e-396866 发表于 2018-5-26 00:20:41

zanyige

曲阿子期 发表于 2019-5-10 18:39:58

我也遇到了同样的问题,但找到了原因,在唤醒后一般要重新 SystemInit(); 这样就把 main()开始设置的中断向量偏移量重置了,所以还要再 SystemInit(); 之后再设置一下偏移量 NVIC_SetVectorTable()

daughtersea 发表于 2020-4-14 17:49:03

我现在用的是stmh743,带bootloaer,周期休眠(standby模式),rtc或者wkup唤醒,但是跑个一段时间,bootloaer跳转到app就卡住了,已经进入app,是在app里面死掉的。

daughtersea 发表于 2020-4-14 17:50:31

帆赛坎塞杆
页: [1]
查看完整版本: STM32f1 bootloader与休眠唤醒