信号量
信号量是用来保护共享资源用的。表示共享资源的个数。共享资源有被用的,需要释放共享资源。
共享资源被占用一个,信号量的值会减1;共享资源被释放一个,信号量的值会加1。
OS_ EVENT *OSSemCreate (INT160 cnt)
函数功能:创建一个信号量
函数形参:初始的时候给信号量一个数值。初始的时候有多少个共享资源。函数返回值:OS_EVENT *:指针。事件控制块指针。
事件控制块:区分不同事件。
void OSSempend (OS_EVENT *pevent,
INT32U timeout,
INT8U *perr)
函数功能:等待一个信号量,接收一个信号量函数形参:OS_EVENT *pevent:事件控制块指针。timeout:等待时间;根据心跳数目去等。为0的时候是死等。
INT8U *perr: 保存错误结果的。OS_ERR_NONE:成功
INT16U OSSemAccept (OS_EVENT *pevent)
函数功能:查询一个信号量。不会产生任何延时。用在中断中。
函数返回值:为0的时候没有信号量产生:不为0有信号量产生。
INT8U OSSemPost (OS_EVENT *pevent)
函数功能:发送一个信号量
函数形参:OS_EVENT *pevent:事件控制块指针。函数返回值:OS_ERR_NONE:表示成功。
消息邮箱
用于任务与任务之间交换数据的,例如:生活中,人与人之间发送邮件一样。消息邮箱中只能存放一则消息。消息的内容长短不限制。
OS_EVENT *OSMboxCreate (void *pmsg)
函数功能:创建一个消息邮箱
函数形参:void *pmsg:万能指针:初始给消息邮箱发送一则消息。函数返回值:OS_EVENT*:事件控制块指针。
void *OSMboxPend (OS_EVENT *pevent, INT32U timeout,INT8U *perr)
函数功能:接收一则消息
函数形参:OS_EVENT *pevent:事件控制块指针。
timeout:等特的时间长度:0的时候表示死等。perr:错误类型:OS_ERR_NONE:表示成功。
perr:错误类型: OS_ERR_NONE:表示成功。
函数返回值: void *:万能指针。这个时候返回的是消息内容的首地址。
void *OSMboxAccept (OS_EVENT *pevent)
函数功能:在中断中用来接收消息邮箱中的消息.。
INT8U OSMboxPost (OS_EVENT *pevent,void *pmsg)
函数功能:发送一则消息
函数形参: OS_EVENT*pevent:事件控制块指针。void *pmsg:万能指针;给消息邮箱发送一则消息。需要发送消息的首地址。
函数返回值:错误类型:OS_ERR_NONE:发送成功。
INT8U OSMboxPostopt (OS_EVENT *pevent,void *pmsg,INT8U opt)
函数功能:发送一则消息
函数形参:INT8U
opt: OS_POST_OPT_NONE:发送给正在等待该消息邮箱的消息中的最高优先级任务OS_POST_OPT_BROADCAsT:发送给所有在等待该消息邮箱的任务。
OS_POST_OPR_NO_SCHED:让该任务在发送消息的时候不会立刻产生任务调度。