Part Number:TMS320C6748
从结果看,程序运行后先进入了高优先级的TASKLED2,再进入TASKLED1,很奇怪为什么不会再一次进入TASKLED1呢?若是修改TASKLED2 的睡眠时间为Task_sleep(1000);则能再一次进入TASKLED1,如下:
问题:请问这是什么原因导致的呢?
Nancy Wang:
根据您贴出的代码来看,有可能是Task_sleep(1)时间太短了,一直被task2抢占,从打印信息看task2的计数值总为4,看上去像semaphore没有被post,程序运行的时候观察一下灯闪烁的情况。
,
user6549373:
确实是semaphore没有被post,那么Task优先级会抢占Delay的运行吗?为什么当Delay(1)时能正常触发Task1,但无法再一次触发呢?
,
Nancy Wang:
user6549373 说:Task优先级会抢占Delay的运行吗?
task sleep意味着当前任务被block,去执行低优先级任务,但当task2休眠时间到了,高优先级的task2就会继续执行当前任务,不管task1是否执行结束。
user6549373 说:为什么当Delay(1)时能正常触发Task1,但无法再一次触发呢?
可能需要借助工具来分析看看了。
software-dl.ti.com/…/rov.html