打印

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

[复制链接]
1963|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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:相关代码见附件


Interrupt vector.png (172.74 KB )

Interrupt vector.png

main.zip

1.39 KB

相关帖子

沙发
zhijun1988| | 2015-3-6 14:06 | 只看该作者
没这样用,帮顶

使用特权

评论回复
板凳
dirtwillfly| | 2015-3-6 22:19 | 只看该作者
没这样用过。
看你的工程里,已经包含了很多模块了。
建议,对使用SYSRIVECT = 1时,单独进行中断服务程序的测试。不要带那么多其他的代码。在中断服务程序里点LED就好。
测试好了再加入其他代码。

使用特权

评论回复
地板
vivilzb1985| | 2015-3-7 17:52 | 只看该作者
MSP5438A可以将中断向量设置为保存在Flash或者RAM中。

使用特权

评论回复
5
shenmu2012| | 2015-3-8 16:40 | 只看该作者
在Flash不同的BANK区运行中断服务程序, 将中断向量设置为保存在RAM中,即设置SYSRIVECT = 1。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

71

帖子

0

粉丝