经常会见到**IntRegister( ) 这种库函数,想知道它在什么地方用或者它的优点。
回复
我想以下一段话多少会对你有所启发:
中断控制器API的主要功能是管理NVIC使用的中断向量表来分派中断请求。注册中断处理程序是一件简单的事情,就是将处理程序地址插入到表中。默认地,表内充满了永远循环执行的内部处理程序的指针;当没有已注册的中断处理程序对中断进行处理时,就会出现一个中断错误。因此,中断源应该在处理程序注册完之后被使能,中断源应当在处理程序注销前被禁止。中断处理程序用IntRegister()和IntUnregister()来管理。
每个中断源可以通过IntEnable()和IntDisable()来单独使能和禁止。处理器中断可以通过IntMasterEnable()和IntMasterDisable()来使能和禁止;这并不会影响单个中断的使能状态。处理器中断的屏蔽可以作为一个简单又重要的部分被使用(当处理器中断被禁止时只有NMI能中断处理器),尽管这会对中断响应时间产生不利的影响。
如果还有什么想法,我们可以再交流.
回复 沙发 wpj1018 的帖子
非常感谢,注册中断函数也相当于用程序修改在Startup中断向量吧?,我经常手工去修改
回复 板凳 慢慢来 的帖子
startup中的是初始状态下的中断向量表,中断向量表的内容可以在程序中修改,也就是用IntRegister,IntUnregister函数来修改。如果某个中断的中断服务程序是固定不变的,修改startup就可以了。
你有这样方式实现IO中断的代码或帖子分享吗?自己的总也不能响应中断。反复检查过的。