单片机复位后不能再执行中断的问题,急

来源:百度知道 编辑:UC知道 时间:2024/09/21 05:33:59
近来遇到一个可怪的问题,单片机上电后可以正常的执行程序和定时中断以及串行中断,在执行串行中断中有时会通讯失败,然后单片机由看门狗发出复位信号,单片机正常复位,在复位后,执行完初始化后,单片机显示就停留在了初始化显示状态,但可以正常的响应键盘事件,由此我判断是单片机已正常进入循环扫描程序,不能显示是因为不能进入定时中断,当然串行中断也是不行的了,此时如果把单片机电源断开,然后再上电,单片机又正常了,实在想不出是什么问题,望大侠们指点一二!谢谢!需要补充的是,我认为我在初始化程序中还是做了足够的工作的,即状态标志位都进行过初始化了的,不知大家有没有遇到过类似的问题?

先不考虑到因为复位引起的状况.

首先.你就不允许因为通讯失败而引起 单片机复位.
这本身就不是一个合理的设计..你需要在通讯失败的时候自己处理
二是..单片机的各种寄存器本身应该有复位状态,当然也有随机的
但是一般比较重要的.各种设置都是确定的
三..初始化各种.单片机设置的时候.比如你说的定时器,通讯的时候.
一定要把各种寄存器初始化完整,,否则碰到某些寄存器复位状态不确定的情况下那是比较惨的..很不容易查出来

估计看门狗没有彻底复位,你的看门狗能不能加大复位时间?

你把程序贴出来就好办 了
^_^

程序跑飞很可能是发生在中断服务子程序中,其次,一些未使用的中断很可能因为程序跑飞而被错误地激活,而简单地让跑飞的程序从头开始运行,就不能关闭已激活的中断,这样,单片机的中断系统会认为程序仍在处理中断,就不再响应同级中断

很有可能是复位不彻底,或者复位的时间不够长。还有一种可能就是像楼上的那位说的,在串行中断中的通讯失败不能用复位来处理。

两种可能:一是没复位成功;二是程序本身在定时中断和串行中断的响应上有问题,这个要根据你的程序才好判断。