utopiaprince 发表于 2012-11-12 10:09:38

msp430复位以后进不了中断

我的用户程序可以正常进入中断,当我用bootloader跳转到用户程序的入口地址,程序也可以执行起来(看LED的变化),但是用户程序运行起来以后却进不了中断;有人遇到同样的问题没有?

jetlib 发表于 2012-11-12 10:23:12

bootloader的中断地址应该是单片机的固定的中断跳转地址,你的用户程序应该用自定义的中断地址。你可以调试一下,看触发中断时,是否跳到bootloader的中断向量,并由bootloader的中断向量跳到你自己的中断服务入口地址。或者你在bootloader的中断向量服务程序入口加一点指示,看是不是你的用户程序运行时有屏蔽中断的动作,导致无法触发到bootloader的中断。我做过430的bootloader,用自己的PC机软件通过串口动态更新固件,还是很稳定的。呵呵。

utopiaprince 发表于 2012-11-12 18:44:41

jetlib 发表于 2012-11-12 10:23 static/image/common/back.gif
bootloader的中断地址应该是单片机的固定的中断跳转地址,你的用户程序应该用自定义的中断地址。你可以调试 ...

我的用户程序的中断向量表是拷贝到了系统初始化向量表里面的,这个不是问题。
经过一下午排查,问题找到,是因为bootloader里面初始化了很多外设,在跳转到用户代码之前,没有对这些外设deinit,导致进入用户代码以后有些中断因为没有中断处理函数而跑飞。

jetlib 发表于 2012-11-12 18:56:27

奇怪,没有deinit设备和中断入口处有没有处理函数有什么关系。另外个人建议在bootload中尽量不要用中断,如果用的话,就需要一些特殊的方法,使得中断例程知道当前是bootloader还是user app,再做对应的jump。反正原理清楚就OK了。
页: [1]
查看完整版本: msp430复位以后进不了中断