有一点儿写一点儿:
关于mpc862的SIU的外部中断源
其实,程序比较简单,流程也比较简单。
在xworks里使用这些中断,只需要几个步骤:
首先,要自己编写一个中断服务程序。至于写中断服务程序有哪些限制,我在这里也不说了,windriver的参考文档里有说明。
然后,就是编写一个中断初始化程序。在这个程序里要完成的工作有:
设置SIEL寄存器相应的中断位,选择中断触发方式;
使用intConnect(),把写好的中断服务程序挂接到相应的中断向量上;
使用intEnble(),使能相应的中断
实现这几步,中断应该是可以使用了。
要注意的是:
INUM_TO_IVEC()和IVEC_TO_INUM(),这两个宏定义只是在做类型转换;
中断号(interrupt number)和中断向量(vector),对于PowerPC来讲,VxWorks只是在类型上做了区别,实际值是相同的。
比如,对于外部中断IRQ7,它的中断号是(int)14,整型数值,而它的中断向量也是(FUNCPTR *)14,却是个函数指针。
另外,对于边沿触发的中断,SIPEND寄存器的中断响应值需要程序去复位;而
对于电平触发的中断,SIPEND寄存器的中断响应值是SIU中断控制器自己复位的。