UCOS OSSemPend OSSemAccept的区别?
最近使用UCOS信号量作资源竞争处理,发现使用OSSemPend会有一些莫名的逻辑错误,推测是由于使用OSSemPend时会进行任务切换,从而对任务堆栈有影响。改用
while(OSSemAccept(Sem) == 0);
没有出现问题了。。。 OSSemPend ,如果多个任务等待一个资源,那么系统会给优先级高的的任务,而优先级低的任务就无法获得 回复【1楼】fengyuganyu
-----------------------------------------------------------------------
这个我知道,这次在任务循环调用一个函数,函数内有一个数组,动态方式里面的数据打印出来全错了,静态的就没有问题,纠结啊,因该不是逻辑问题,感觉编译器有问题。 问题解决了。。还是本人逻辑错误;
1)没注意在中断调用了使用信号量的等待的函数,结果无论在任务还是在中断,发送都不会等待而直接超时。
2)使用DMA发送,在使用函数内局部变量时,由于是动态获取的,所以必须在发送完成后才能退出函数。 mark!!!! mark!!! OK{:smile:}{:smile:} 路过。。。。。
页:
[1]