在CCS6.2的帮助中,发现如下中断配置例程:
An example of using CpIntc during runtime to plug the ISR handler for System interrupt 15 mapped to Host interrupt 8 on Hwi 7.
Int eventId;Hwi_Params params;Error_Block eb;// Initialize the error blockError_init(&eb);// Map system interrupt 15 to host interrupt 8 on Intc 0CpIntc_mapSysIntToHostInt(0, 15, 8);// Plug the function and argument for System interrupt 15 then enable itCpIntc_dispatchPlug(15, &myEvent15Fxn, 15, TRUE);// Enable Host interrupt 8 on Intc 0CpIntc_enableHostInt(0, 8);// Get the eventId associated with Host interrupt 8eventId = CpIntc_getEventId(8);// Initialize the Hwi parametersHwi_Params_init(¶ms);// Set the eventId associated with the Host Interruptparams.eventId = eventId;// The arg must be set to the Host interruptparams.arg = 8;// Enable the interrupt vectorparams.enableInt = TRUE;// Create the Hwi on interrupt 7 then specify 'CpIntc_dispatch'// as the function.Hwi_create(7, &CpIntc_dispatch, ¶ms, &eb);
这里 myEvent15Fxn 为自定义函数,CpIntc_dispatch 为内部函数,当系统中断事件发生时,应该会执行myEvent15Fxn,
那么将 Host interrupt 再关连到硬件中断7的作用是什么,如果不关连就是不会执行 myEvent15Fxn吗?
既然已经指定中断服务函数 myEvent15Fxn,CpIntc_dispatch作用是什么?
Shine:
host interrupt再关联到硬件中断7是CPU interrupt,请看一下面的图示。
http://processors.wiki.ti.com/index.php/Configuring_Interrupts_on_Keystone_Devices#HWI
Yongshan Cui:
回复 Shine:
谢谢您的回答,还是不太明白
CpIntc_dispatch作用是什么?
Yongshan Cui:
回复 Shine:
谢谢您的回答!
不好意思,那个链接看得不够细致。
函数 CpIntc_dispatch 执行硬件中断发生时的必要操作,清除系统中断事件,响应中断服务函数。
在读到该例程时没明白函数 CpIntc_dispatch 的作用,是因为以前在配置硬件中断时并没有关联 CpIntc_dispatch ,而是直接关联中断服务函数,也能正常响应,但在自己的服务函数中需要进行事件清除操作。
现在明白了,再次感谢!