01 - API分类
RTX51 Tiny
的OS API只有13个,官网或者Keil的【Help】中可以查看到:
按照用途,可以把这些API分为若干类:
- 创建删除:os_create_task、os_delete_task
- 通讯:isr/os_send_signal、os_clear_signal、os_wait/wait1/wait2、os_reset_interval
- 调度:isr/os_set_ready、os_switch_task
- 其它:os_running_task_id
API的前缀有ISR
和OS
两种,ISR
表明此API只能在中断种使用,OS
表明此API只能在任务中使用,RTX51 Tiny
的API是十分精炼的,资源的限制让其只能提供单一的功能,比如通讯方式只提供了信号,所以如果需要稍微复杂的通讯方式就需要自己去基于内核开发。
02 - API 列表
以下是API详细列表
功能 | 返回值 | 注意 | |
---|---|---|---|
os_create_task | 创建一个任务,进入ready态,准备运行 | 0:创建成功-1:任务无法启动、任务已经运行、没有定义任务 | task ID必须是唯一没有重复的,否则会报error |
os_delete_task | 暂停指定ID的任务,并在任务列表中删除此任务 | 0:指定任务成功暂停并且删除-1:任务不存在、任务没有启动 | 如果删除的任务是自身,则删除后马上切换下一个任务 |
isr_send_signal | 中断中发送一个信号给指定的任务,如果该任务之前已经等待信号,则该任务被置为ready态,但不是马上运行,如果该任务没有等待信号,则该任务依然存在信号标志 | 0:发送成功-1:任务不存在 | —————— |
isr_set_ready | 把指定的任务设置为ready态,等待调度器调度运行 | None | —————— |
os_send_signal | 与isr_send_signal一样,只是此API只能在任务中使用 | 0:发送成功-1:任务不存在 | —————— |
os_set_ready | 把指定的任务设置为ready态,等待调度器调度运行 | None | —————— |
os_clear_signal | 清除指定任务的信号标志位 | 0:清除成功-1:任务不存在 | —————— |
os_wait | 停止当前任务,指定等待一个或多个事件,事件会是间隔K_IVL、超时K_TMO、中断或信号K_SIG中的一个 | 返回值会是以下的其中一个RDY_EVENT:被 os_set_ready or isr_set_ready设置TMO_EVENT:时间间隔K_IVL或超时K_TMO到达SIG_EVENT:信号K_SIG到达NOT_OK:参数错误 | 共3个参数,第3个参数是Full使用的,Tiny用不到,填0即可 |
os_wait1 | os_wait的子集,用于等待中断或信号K_SIG | 返回值会是以下的其中一个RDY_EVENT:被 os_set_ready or isr_set_ready设置SIG_EVENT:信号K_SIG到达NOT_OK:参数错误 | —————— |
os_wait2 | os_wait的子集,功能和os_wait一样 | 和os_wait一样 | 只有2个参数,消除了os_wait中第3个没有用到的参数 |
os_reset_interval | 重新设置等待的间隔K_IVL | None | 当同时用到K_IVL和K_SIG的时候,需要在K_SIG的到达后调用此函数,重新设置间隔 |
os_switch_task | 停止当前任务的执行,让出CPU资源让其他任务执行,如果调用os_switch_task的任务 是唯一准备执行的任务,它将立即恢复运行 | None | 主动切换后,将在不可预知的时刻重新得到执行(时间片调度),或者根据程序逻辑重新得到执行(协助调度) |
03 - 总结
- API按照前缀分为2类:OS和ISR
- API按照用途分为4类:创建删除、通讯、调度和其他
- 01-【RTX51 Tiny入门】-RTX51 Full & Tiny简介
- 02-【RTX51 Tiny入门】-资源占用情况
- 03-【RTX51 Tiny入门】-内核组成
- 04-【RTX51 Tiny入门】-任务和调度器
- 05-【RTX51 Tiny入门】-OS API函数
- 06-【RTX51 Tiny入门】-查看RTX51 Tiny官方例程
- 07-【RTX51 Tiny入门】-使用RTX51 Tiny
- 08-【RTX51 Tiny入门】-Conf_tny.A51配置文件
- 09-【RTX51 Tiny初级】-K_TMO与K_IVL的区别和使用场合
- 10-【RTX51 Tiny初级】-os_send_signal()和os_set_ready()的区别和使用场合
- 11-【RTX51 Tiny初级】-os_wait和os_switch_task区别和使用场合
- 12-【RTX51 Tiny初级】-解决多重调用问题(MULTPLE CALL TOSEGMENT)
- 13-【RTX51 Tiny高级】-进行Task的划分与拆分
- 14-【RTX51 Tiny高级】-修改默认产生时间片的定时器T0为其它定时器
- 15-【RTX51 Tiny高级】-考虑Round-Robin的开启与关闭
- 16-【RTX51 Tiny高级】-解决Task之间的通讯和耦合问题
- 17-【RTX51 Tiny高级】-Task ID隐藏的优先级问题
- 18-【RTX51 Tiny高级】-系统架构的设计