Semaphore_post(); 发送的是什么内容?
/* ======== clockHandler2 ======== */
Void clockHandler2(UArg arg)
{
/* Call Semaphore_post every 16 ms */
Semaphore_post(sem);// 发送的是什么内容?
}
/* ======== hiPriTask ======== */
Void hiPriTask(UArg arg0, UArg arg1)
{
static Int numTimes = 0;
while (1) {
System_printf("hiPriTask here\n");
if (++numTimes < 3) {
Semaphore_pend(sem, BIOS_WAIT_FOREVER);// 此句起的是什么作用?
}
else {
System_printf("Slice example ending.\n");
System_exit(0);
}
}
}
您可以参考链接 http://processors.wiki.ti.com/images/4/4f/Semaphores.pdf
readlove1 readlove1,
可以看二楼介绍的文档。
简单说就是RTOS中的信号量机制,不同task之间的通信方式。
原理其实很简单,相当于我们程序的设定的一个flag和一个定时器,默认flag=0,如果不为“1“就不执行下面程序,等待定时器一到把flag=1,才执行,Semaphore_post(sem);// 相当于把flag变成1,
Semaphore_pend(sem, BIOS_WAIT_FOREVER);// BIOS_WAIT_FOREVER就是代表它一直等待,等待信号量sem=1, 变成1后,这个函数会自动把sem清0,
希望这样比喻你能明白,具体API可以看楼上文章详细介绍。