|
本帖最后由 SCREA 于 2016-5-8 08:05 编辑
求助:MSP430做ISP升级完后为何重启才能运行
主程序已经写到FLASH区,中断向量已经修改为APP的向量。然后
asm("mov #04000h,PC");
此时还要断电重启下 APP区的才能执行,求助下这如何是好?哪个地方忘记做了或没做?
=======================
解决了 asm("mov &0xFFFEh,PC"); 记住,是中断向量复位地址
原因是 Flash的APP被升级到新的APP,向量表也已经更新,此时跳转到4000起始地址无任何意义, 而跳转到0xfffe中断向量地址处(0xfffe地址存的是复位代码的执行地址,PC此时加载这个地址,就意味这会跳到中断复位函数处),就会执行复位。ISP升级起码是这样的。
升级后若是不这样做,除非断电重启,或按下RESET键(汇编的复位没有试过。APP程序升级后在复位前 直接 用汇编写复位命令 应该能复位,毕竟此时APP区的代码和中断向量全部被更新了)。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|