RTX-51 Full 的函数功能

RTX - 51 Full 是 Keil 公司提供的一个实时操作系统内核,它提供了丰富的函数来实现任务管理、时间管理、信号量管理、消息队列管理等功能。以下是 RTX - 51 Full 中一些主要函数及其功能的详细介绍:
任务管理函数
任务创建与删除
os_create_task
功能:创建并启动一个新任务。新任务会被添加到任务调度队列中,并在合适的时机开始执行。
参数:通常是要创建的任务的 ID。
返回值:成功创建任务返回 0,失败则返回非零值(如任务 ID 无效、系统资源不足等情况)。
os_delete_task
功能:删除指定 ID 的任务。被删除的任务将从任务调度队列中移除,释放其所占用的系统资源。
参数:要删除的任务的 ID。
返回值:成功删除任务返回 0,失败返回非零值(如任务 ID 无效、任务正在执行关键代码等情况)。
任务挂起与恢复
os_suspend_task
功能:将指定 ID 的任务挂起,使其暂停执行。挂起的任务不会参与任务调度,直到被恢复。
参数:要挂起的任务的 ID。
返回值:成功挂起任务返回 0,失败返回非零值。
os_resume_task
功能:恢复被挂起的指定 ID 的任务,使其重新进入任务调度队列,等待执行。
参数:要恢复的任务的 ID。
返回值:成功恢复任务返回 0,失败返回非零值。
任务优先级设置
os_set_task_priority
功能:设置指定 ID 任务的优先级。优先级决定了任务在任务调度中的执行顺序,高优先级任务会优先执行。
参数:任务 ID 和要设置的优先级值。
返回值:成功设置优先级返回 0,失败返回非零值。
时间管理函数
任务延时
os_wait
功能:使当前任务进入等待状态,等待指定的事件发生或经过指定的时间。可用于实现任务的延时执行。
参数:事件选择(如K_TMO表示等待超时事件)和时间间隔(以时钟节拍为单位)。
返回值:返回等待结束的原因(如超时、接收到信号等)。
时钟节拍获取
os_get_time
功能:获取当前的系统时钟节拍数。可用于实现一些与时间相关的逻辑,如计时、定时操作等。
参数:无。
返回值:当前的系统时钟节拍数。
信号量管理函数
信号量创建与删除
os_create_sem
功能:创建一个信号量,并初始化其初始值。信号量可用于实现任务间的同步和互斥。
参数:信号量的初始值。
返回值:成功创建信号量返回信号量的 ID,失败返回无效的 ID。
os_delete_sem
功能:删除指定 ID 的信号量,释放其占用的系统资源。
参数:要删除的信号量的 ID。
返回值:成功删除信号量返回 0,失败返回非零值。
信号量获取与释放
os_wait_sem
功能:当前任务尝试获取指定 ID 的信号量。如果信号量的值大于 0,则获取成功,信号量的值减 1;否则,任务进入等待状态,直到信号量可用。
参数:信号量的 ID 和等待超时时间(可选)。
返回值:成功获取信号量返回 0,超时返回非零值。
os_release_sem
功能:释放指定 ID 的信号量,使信号量的值加 1。如果有其他任务正在等待该信号量,则唤醒其中一个任务。
参数:信号量的 ID。
返回值:成功释放信号量返回 0,失败返回非零值。
消息队列管理函数
消息队列创建与删除
os_create_mbox
功能:创建一个消息队列,并指定其大小。消息队列可用于任务间的消息传递。
参数:消息队列的大小(即可以存储的消息数量)。
返回值:成功创建消息队列返回消息队列的 ID,失败返回无效的 ID。
os_delete_mbox
功能:删除指定 ID 的消息队列,释放其占用的系统资源。
参数:要删除的消息队列的 ID。
返回值:成功删除消息队列返回 0,失败返回非零值。
消息发送与接收
os_send_mbox
功能:向指定 ID 的消息队列发送一条消息。如果消息队列已满,则任务可能进入等待状态,直到有空间可用。
参数:消息队列的 ID 和要发送的消息指针。
返回值:成功发送消息返回 0,失败返回非零值。
os_wait_mbox
功能:当前任务从指定 ID 的消息队列中接收一条消息。如果消息队列为空,则任务进入等待状态,直到有消息到达。
参数:消息队列的 ID 和等待超时时间(可选)。
返回值:成功接收消息返回 0,超时返回非零值。
其他函数
任务切换
os_switch_task
功能:强制进行任务切换,立即将 CPU 控制权交给下一个就绪的任务。
参数:无。
返回值:无。
获取当前任务 ID
os_running_task_id
功能:获取当前正在执行的任务的 ID。
参数:无。
返回值:当前正在执行的任务的 ID。