os_wait_signal
所属模块:时间管理 | 类型:任务同步函数
函数简介
os_wait_signal 用于让当前任务等待外部信号触发,
在等待期间任务会被阻塞并让出CPU执行权。
该函数适用于任务之间的简单同步场景,
当信号到达后任务将被重新调度执行。
函数原型
char os_wait_signal() reentrant;
返回值
返回 OS_WAIT_SIGNAL 表示成功收到信号。
源码实现
char os_wait_signal() reentrant
{
EA = 0;
OS_WAIT_DI[OS_YUNXING_BIANHAO] = 0;
OS_PEOCESS_OK[OS_YUNXING_BIANHAO] &= 0xFE;
os_switch();
EA = 1;
return OS_WAIT_SIGNAL;
}
使用示例
void task1()
{
while(1)
{
// 等待信号
os_wait_signal();
// 收到信号后执行
}
}
注意事项
该函数会使任务进入阻塞状态,必须配合信号触发机制使用,否则任务将一直等待。