本帖最后由 jgphu 于 2012-2-21 15:20 编辑
1. 首先说明, 我的APP程序进入STOP模式和从STOP模式唤醒是没有问题的(如果STM32只烧录APP程序时).
2. 其次说明, 当我的BOOT部分程序和APP部分程序都烧录到芯片后, 成功的从BOOT代码跳转到APP代码, 并且在APP代码运行时, 定时器中断/串口发送中断/CAN通信接收中断正常.(未进入STOP低功耗模式)
3. 问题是: 当我的芯片有BOOT部分程序和APP部分程序时, 进入STOP低功耗模式前, 将CAN模式停止, CAN RX设置为外部中断. 进入STOP低功耗模式, 然后通过CAN RX上的电平沿的变化就芯片唤醒, 唤醒后外部晶振起振, 但程序没有正常运行.
4. 两部分代码堆栈都是默认的;
define symbol __ICFEDIT_size_cstack__ = 0x200;
define symbol __ICFEDIT_size_heap__ = 0x000;
我的BOOT部分程序 中断向量起始为0X8000000
我的AP部分程序 中断向量起始为0X8010000
现在要烧两部分程序到STM32中, 包括BOOT和AP两部分. 有这两部分时, 只要进入到STOP模式, 外部中断退不出来STOP模式, 后来又用STANDBY模式也退不出来. 但是当用到WWDG的时候, 有外部中断的时候会引起WWDG复位.(因为有WWDG复位是不是可以说明STM32已退出STOP模式)
PWR_EnterSTOPMode(PWR_Regulator_ON, PWR_STOPEntry_WFI); |