- 27
- 9月
还记得一年前,Hanny刚刚接手开始做项目的时候,有时总会遇到一些很入门级的问题。
就比如说中断吧,有个时候就是不知怎么也进不了自己想进的中断。经过了一段时间的学习,也总结了一些经验和心得。现在再努力回忆一下,把这些心得记下来。
遇到进不了自己想进的中断,首先要确定的是:全局中断使能标志是否打开,比如51中的EA。如果确信全局中断已经打开,那么接下检查MR的中断标志是否打开。如果这些都确定好了。那么就可以进入下一步了。
下一步,在主程序死循环等待中断pending是否有出现。如果没有,那么注意相关模块是否已经打开并且正常运行,相关模块的配置是否正确。比如定时器是否已经开始运行,是否允许中断,中断的条件是否正确等。
如果pending已经出现,中断使能也已经打开,还进不了中断,那么就只剩下最后一个可能了:中断入口地址不对。入口地址不对,最常见的情况就是程序直接跑飞,当然有时也能够正常运行。那么此时最需要做的就是查看芯片的SPEC,确认中断的入口地址是否设置正确。特别是有些芯片中断向量地址可能有多个,这时就需要确认相关的配置了。这里需要注意的是,有些芯片,中断在高优先级和低优先级的入口地址是不一样的。还有一点,就是有些编译器,当你在同一个中断向量地址写两个处理函数时,编译器会删除其中一个,导致无法执行想执行的函数。
嗯,就是这些了。