本帖最后由 power568 于 2016-3-15 17:04 编辑 在学些uCOSIII,最近写了个简单测试程序,简单创建了个任务, 在任务中等待信号量:while(1) { OSSemPend(&TestSem, 0, OS_OPT_PEND_BLOCKING, NULL, &err); TeseNum ++; } 在中断中Post信号量: OSSemPost(&TestSem, OS_OPT_POST_NO_SCHED, &err); 周期大约20ms左右,测试过程中,发现正常运行一段时间后,任务再也无法Pend成功。 哪位大侠遇见过这种情况,求指点迷津!!! 信号量创建为: OSSemCreate(&UsartOneDmaRecDoneSem, "URT one dma rec done", 0, &err); |
不是很明白,信号量不是可以在中断中Post吗?
求解~!!!
虽然我把中断中的Post去电,改为任务中延时后确实是可以了...
但是原因想不明白???
你的意思是OSSemPend还未执行完毕?
这么说的话,有可能,谢谢!!!
后来想想,信号使用不可能会冲突,我在一个任务中Pend,在中断中Post,其余地方未使用。
之前以为是中断周期太短造成的,但是周期放长到100ms后仍然出现,只是出现时间迟点而已。
应该是其余的原因引起的。
感谢你的支持,问题解决了...
OSIntExit: 用于退出中断嵌套后执行任务切换;
如果中断中没有使用到涉及到任务调度的系统函数,可以不使用也不会影响功能...