请问该如何触发一个中断进入到中断函数中?

#include "semLib.h" 
SEM_ID syncSem;
/* ID of sync semaphore */
init ( int someIntNum )
{ /* connect interrupt service routine */ 
intConnect (INUM_TO_IVEC (someIntNum), eventInterruptSvcRout, 0); 
/* create semaphore */ 
syncSem = semBCreate (SEM_Q_FIFO, SEM_EMPTY);
/* spawn task used for synchronization. */
taskSpawn ("sample", 100, 0, 20000, task1, 0,0,0,0,0,0,0,0,0,0);


task1 (void) 
{ ... 
semTake (syncSem, WAIT_FOREVER);
/* wait for event to occur */
printf ("task 1 got the semaphore\n");
... 
/* process event */

eventInterruptSvcRout (void)
{ ... 
semGive (syncSem); 
/* let task 1 process event */
...
}
请问如何触发一个中断进入到中断函数中,还有就是同步函数执行后,是立即跳转task1函数,还是继续执行其后面的代码(假如后面还紧跟有代码)???谢谢了!!

GCT1015
浏览 98回答 1
1回答

翻阅古今

呵呵,楼主是在vxworks下面编码的吧~vxworks是不支持软中断的,也就是说你的中断处理函数必须由硬件触发IRQ才能得到执行。在中断处理函数执行时,系统调度是被禁止的,也就是说中断处理释放信号量后,task1不会立即得到执行,而必须等到eventInterruptSvcRout 执行完后,系统才会再次调度。时间长了,vxworks的好多内容记不太清了,建议楼主查一下vxworks的编程手册,特别是libindex.html,也许存在软件触发中断的API
打开App,查看更多内容
随时随地看视频慕课网APP