#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函数,还是继续执行其后面的代码(假如后面还紧跟有代码)???谢谢了!!
1 回答
翻阅古今
TA贡献1780条经验 获得超5个赞
呵呵,楼主是在vxworks下面编码的吧~
vxworks是不支持软中断的,也就是说你的中断处理函数必须由硬件触发IRQ才能得到执行。
在中断处理函数执行时,系统调度是被禁止的,也就是说中断处理释放信号量后,task1不会立即得到执行,而必须等到eventInterruptSvcRout 执行完后,系统才会再次调度。
时间长了,vxworks的好多内容记不太清了,建议楼主查一下vxworks的编程手册,特别是libindex.html,也许存在软件触发中断的API
- 1 回答
- 0 关注
- 97 浏览
添加回答
举报
0/150
提交
取消