我重新将问题整理到这里:原帖是:<br />UCOS-II(中断中发送信号量的疑问)<br />---------------------------<br />实验板使用的是:<br /> SmartARM2300<br />看到一段代码如下:<br />等待信号量的代码:<br />void TaskBeep(void *pdata)<br />{<br />.....<br /> while(1)<br /> {<br /> OSSemPend(Sem1,0,&err);<br /> .........<br /> }<br />}<br />中断服务程序:(中断服务程序这样发送信号量是否不对????)<br />void ExInt_Exception(void)<br />{<br /> OSSemPost(Sem1); ???/*如果TaskBeep的信号量已处于等待状态,那么这里其不是要进行任务切换入TaskBeep中?而这是在中断服务程序中????*/<br /> IO0IntClr= KEY1; <br /> VICVectAddr = 0;<br />}<br />我觉得以上的中断程序中发信号量,正确的因该是:<br />void ExInt_Exception(void)<br />{<br /> OSIntENTER(); //加上这<br /> OSSemPost(Sem1); <br /> IO0IntClr= KEY1; <br /> VICVectAddr = 0;<br /> OSIntExit(); //退出时任务调度!!(如此才可以吧)<br />}<br />-----------------------------<br /><br />再次问是否要让中断服务程序参与任务管理,因该加上OSIntENTER()与OSIntExit()两个函数???<br /><br />如果不加,请解释一下是为什么???<br /><br />LPC新手,谢谢指教<br /><br /> 相关链接:<a href='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'>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</a> |
|