信号量
功能: 类似上锁机制,保护共享资源,基本用来任务同步
分类: 二进制信号量(共享资源区)
计数型信号量(任务同步)
创建信号量
1 OS_SEM MY_SEM; //信号量控制块,用于访问共享资源 2 3 OSSemCreate ( (OS_SEM* )&MY_SEM, //信号量控制块, 4 5 (CPU_CHAR* )"MY_SEM", //信号量的名字 6 7 (OS_SEM_CTR)1, //信号量的值,1是二进制信号量,其他是计数型 8 9 (OS_ERR* )&err);
请求信号量
1 OS_SEM_CTR OSSemPend (OS_SEM *p_sem, //信号量控制块 2 3 OS_TICK timeout, //等待信号量的时间,如果没有等到就恢复执行任务 //如果时间为0则一直等待. 4 5 OS_OPT opt, //信号量无效时的选项. 挂起/返回 6 7 CPU_TS *p_ts, //记录接收到信号量的时刻 8 9 OS_ERR *p_err
发送信号量
1 OSSemPost (OS_SEM *p_sem, //信号量控制块 2 3 OS_OPT opt, // OS_OPT_POST_1 向等待信号量优先级最高的任务发送 4 5 // OS_OPT_POST_ALL 所有任务发送 6 7 // OS_OPT_POST_NO_SCHED 禁止任务调度 8 9 OS_ERR *p_err) //发送(释放)信号量,此时信号量+1