我重新将问题整理到这里:原帖是: UCOS-II(中断中发送信号量的疑问) --------------------------- 实验板使用的是: SmartARM2300 看到一段代码如下: 等待信号量的代码: void TaskBeep(void *pdata) { ..... while(1) { OSSemPend(Sem1,0,&err); ......... } } 中断服务程序:(中断服务程序这样发送信号量是否不对????) void ExInt_Exception(void) { OSSemPost(Sem1); ???/*如果TaskBeep的信号量已处于等待状态,那么这里其不是要进行任务切换入TaskBeep中?而这是在中断服务程序中????*/ IO0IntClr= KEY1; VICVectAddr = 0; } 我觉得以上的中断程序中发信号量,正确的因该是: void ExInt_Exception(void) { OSIntENTER(); //加上这 OSSemPost(Sem1); IO0IntClr= KEY1; VICVectAddr = 0; OSIntExit(); //退出时任务调度!!(如此才可以吧) } -----------------------------
再次问是否要让中断服务程序参与任务管理,因该加上OSIntENTER()与OSIntExit()两个函数???
如果不加,请解释一下是为什么???
LPC新手,谢谢指教
相关链接:https://bbs.21ic.com/club/bbs/list.asp?boardid=39&page=1&t=2978800&tp=UCOS-II%uFF08%u4E2D%u65AD%u4E2D%u53D1%u9001%u4FE1%u53F7%u91CF%u7684%u7591%u95EE%uFF09 |