task阻塞
大家好!
任务中加入Semaphore_pend时,此时任务应该进入block阻塞态,但在debug时,ROV中显示此任务一直处于RUNNING态,为什么呢?难道信号量创建失败?
另外是CCS DEBUG中,是否能够查看信号量的值,例如POST,PEND
如果task被semphore_pend挂起,在ROV中该task的状态应该显示为blocked,并且会看到blocked的原因是在等待某个semphore。如果你在ROV中看到task仍然处于running状态,说明该task并没有被semphore_pend挂起,请检查程序的逻辑,比如是不是有地方在不停的post该semphore等。
在CCS的ROV中可以查看semphore的值,尤其是当你定义的semphore是count类型时,可以通过ROV查看当前post-pend的次数
芯片,例程?
CCS中如何查看semphore的值和post-pend的次数?
另外我发现,创建semphore和pend,post必须在同一文件中才能执行,在不同文件中执行post,程序后死,而且不能单步执行了,是不是?
那么如何在不同文件中调用post,pend?
是在历程的基础上搭建自己的工程
你用的什么芯片?哪个例程?
如上图所示,如果你的semphore是counting模式的,每post一次,计数加1,每pend一次,计数减1,当计数减到0时,task就会blocked。
你可以参考
http://www.ti.com/lit/ug/spruex3q/spruex3q.pdf
了解更多关于semphore的信息。
如果想在多个文件之间使用同一个semphore,需要在其他文件中extern semphore相关的变量。
你好!flex,谢谢你了
我用的是CC1310,我按照你的在试试!