二、任务同步信号量相关的API函数
OSSemHandle_t OSSemCreate()
函数OSSemCreate为信号量(Semaphore)创建函数,用于创建任务间同步操作的信号量。信号量创建后,默认有效信号量计数值为0,表示该信号量无有效信号,对应的OSSemPend函数处于阻塞状态,等待有效信号;其返回值为OSSemHandle_t类型的句柄,方便用于对该信号量的操控;
sOSBase_t OSSemPend( OSSemHandle_t SemHandle, uOSTick_t xTicksToWait)
函数OSSemPend为信号量等待函数,在任务执行函数中调用,用于等待相关同步的信号量;参数OSSemHandle_t SemHandle为信号量句柄,参数uOSTick_t xTicksToWait为任务阻塞时间,单位为Tick数,若设置为OSPEND_FORVER_VALUE,则会永远阻塞,直至指定信号量 SemHandle获取到有效信号;
sOSBase_t OSSemPost( OSSemHandle_t SemHandle)
函数OSSemPost用于向指定信号量发送有效信号,使处于等待该信号量的任务获取同步信号,以便恢复执行。注:此函数不能在中断服务函数中调用。
sOSBase_t OSSemPostFromISR( OSSemHandle_t SemHandle )
函数OSSemPostFromISR用于向指定信号量发送有效信号,使处于等待该信号量的任务获取同步信号,以便恢复执行。注:此函数只能在中断服务函数中调用。
三、任务同步消息相关的API函数
OSMsgQHandle_t OSMsgQCreate( const uOSBase_t uxQueueLength, const uOSBase_t uxItemSize)
函数OSMsgQCreate为消息队列的创建函数,用于创建任务间同步操作的消息队列,参数uxQueueLength为消息队列中的消息数的容量(消息数目超过此容量,则发送任务挂起,直到消息队列有空闲位置),第二个参数uxItemSize为单个消息的长度。其返回值为 OSMsgQHandle_t类型的消息队列句柄,方便对消息队列的操控;
sOSBase_t OSMsgQReceive( OSMsgQHandle_t MsgQHandle, void * const pvBuffer, uOSTick_t xTicksToWait)
函数OSMsgQReceive用于在任务中接收指定消息队列的消息,在任务执行函数中调用;该函数为任务阻塞函数。参数MsgQHandle为消息队列句柄, 参数pvBuffer表示消息的指针,参数xTicksToWait为消息队列等待接收时间,单位为Tick,若设置为 OSPEND_FORVER_VALUE,则会永远等待,直至指定消息队列MsgQHandle获取到有效消息为止。函数返回值代表消息接收状态,若为 FALSE则未接收到有效消息,若为TRUE则接收到有效消息;
sOSBase_t OSMsgQReceiveFromISR( OSMsgQHandle_t MsgQHandle, void * const pvBuffer)
函数OSMsgQReceiveFromISR用于在中断函数中接收指定消息队列的消息;参数MsgQHandle为消息队列句柄, 参数pvBuffer表示消息的指针,该函数不会阻塞。函数返回值代表消息接收状态,若为FALSE则未接收到有效消息,若为TRUE则接收到有效消息;注:此函数只能在中断服务函数中调用。
sOSBase_t OSMsgQSend( OSMsgQHandle_t MsgQHandle, const void * const pvItemToQueue, uOSTick_t xTicksToWait)
函数OSMsgQSend用于向指定的消息队列发送消息,使处于等待该消息的任务获取同步消息,并恢复执行,其中参数MsgQHandle表示消息队列,参数pvItemToQueue表示消息地址(指针),参数xTicksToWait为消息发送等待接收时间,单位为Tick,若设置为 OSPEND_FORVER_VALUE,则会永远等待,直至指定消息队列MsgQHandle有空闲位置。函数返回值代表消息发送状态,若为FALSE 则消息发送失败,若为TRUE则消息发送成功;注:此函数不能在中断服务函数中调用。
sOSBase_t OSMsgQSendFromISR( OSMsgQHandle_t MsgQHandle, const void * const pvItemToQueue)
函数OSMsgQSendFromISR用于向指定的消息队列发送消息,使处于等待该消息的任务获取同步消息,并恢复执行,其中参数 MsgQHandle表示消息队列,参数pvItemToQueue表示消息地址(指针),如果消息队列已满,则函数不会阻塞,直接返回发送失败信息。注:此函数只能在中断服务函数中调用。
四、定时器相关的API函数
OSTimerHandle_t OSTimerCreate(OSTimerFunction_t Function, void* pvParameter, uOSBase_t uxPeriodicTimeMS, sOS8_t* pcName)
接口函数OSTimerCreate用于创建定时器。其中参数Function为定时器的服务函数,用于响应定时器,函数 OSTimerFunction_t的定义类型为void TimerFunction(void *pParameters )。pvParameter为定时器服务函数的参数,不用时可以设置为NULL。参数uxPeriodicTimeMS为定时器的周期,单位为毫秒。参数 pcName为定时器的名称,方便区分不同的定时器;注意:定时器服务函数中禁止添加信号量等待、消息队列等待等用于阻塞的函数,为不影响整个系统的性能,定时器服务函数耗时越少越好。
uOSBase_t OSTimerStart(OSTimerHandle_t const TimerHandle)
定时器创建完毕后并不会自动启动,需要用户显示的调用启动函数OSTimerStart(),之后定时器才会生效。参数TimerHandle为定时器句柄,为定时器创建函数OSTimerCreate()的返回值;
uOSBase_t OSTimerStop(OSTimerHandle_t const TimerHandle)
定时启动后,用户可以通过接口函数OSTimerStop()停止定时。参数TimerHandle为定时器句柄,为定时器创建函数OSTimerCreate()的返回值;
2015职称计算机考试书PowerPoint2007中 .. 定价:¥45 优惠价:¥42 更多书籍 | |
2015年全国职称计算机考试教材(2007模 .. 定价:¥225 优惠价:¥213 更多书籍 |