21ic问答首页 - 进中断时返回地址错误
进中断时返回地址错误
tp1332022-07-14
各位,我现在遇到一个奇怪的问题,我用的是dspic30f4011单片机,在运行中发现有些时候进入中断后,应该压入栈中的地址并不正确,通过排查,发现编译时如果出现类似于MOV W0, [W15]这样对以W15指向空间的内容操作就有几率出现,目前用DISI命令停止响应中断可以暂时解决问题,不过我用C语言编程,对W15指向空间的操作都是编译器编译的结果,涉及if语句for语句等。这种情况各位遇到过吗?有什么正常的解决方式吗?
赞0
评论
2022-07-15
赞0
评论
2022-07-14
没错,我也认为是,当我把程序精简到只有一个for循环和一个定时器中断的时候还是出现这种情况,我在进中断的时候什么都没做直接检查压栈内容,结果该是地址的地方就是不对,里面的内容是中断发生时数据计算的临时结果,在这款单片机中W15一直指向可用的内存地址,函数计算的临时结果都存在那里,中断发生时应该是返回地址,结果不是,这就造成了中断返回错误。
您需要登录后才可以回复 登录 | 注册