MSP430F5438A中断向量存放在Flash和RAM的问题!!!

[复制链接]
 楼主| johdon23 发表于 2015-3-5 08:57 | 显示全部楼层 |阅读模式
本帖最后由 johdon23 于 2015-3-5 10:46 编辑

        我在调试MSP430F5438A的在线升级功能时,遇到如下问题:

         由Datasheet知道,MSP5438A可以将中断向量设置为保存在Flash或者RAM中(SYSCTL寄存器的SYSRIVECT位来控制,如附图所示)。

         为了在Flash不同的BANK区运行中断服务程序, 我将中断向量设置为保存在RAM中,即设置SYSRIVECT = 1

         结果发现程序无**常运行。
         通过仿真,跟踪代码发现,当程序运行到使能全局中断 __bis_SR_register(GIE); 之后,

         PC跳转到0x0000,接下来执行到0x0004地址时,里面是条跳转指令 JMP     (0x0004),

         程序最后在0x0004这个地址陷入死循环!!!


         同样的程序,如果将中断向量设置为保存在Flash中,即将SYSRIVECT = 1屏蔽,就能够正常运行!
         PS:相关代码见附件


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
zhijun1988 发表于 2015-3-6 14:06 | 显示全部楼层
没这样用,帮顶
dirtwillfly 发表于 2015-3-6 22:19 | 显示全部楼层
没这样用过。
看你的工程里,已经包含了很多模块了。
建议,对使用SYSRIVECT = 1时,单独进行中断服务程序的测试。不要带那么多其他的代码。在中断服务程序里点LED就好。
测试好了再加入其他代码。
vivilzb1985 发表于 2015-3-7 17:52 | 显示全部楼层
MSP5438A可以将中断向量设置为保存在Flash或者RAM中。
shenmu2012 发表于 2015-3-8 16:40 | 显示全部楼层
在Flash不同的BANK区运行中断服务程序, 将中断向量设置为保存在RAM中,即设置SYSRIVECT = 1。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

71

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

34

主题

71

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部