51单片机rtx51-Tiny嵌入式实时操作系统初试

什么是RTOS系统

RTOS是Real Time Operation System的缩写,即实时操作系统!

rtos51介绍

rtx51是什么

rtx51是keil官方开发的用于8051系列处理器多任务实时操作系统

rtx51可以干什么

RTX51可以简化那些复杂而且时间要求严格的工程的软件设计工作

rtx51的两个版本

RTX51 Full

RTX51 Full使用四个任务优先权完成同时存在时间片轮转调度和抢先的任务切换 RTX51工作在
与中断功能相似的状态下 信号和信息可以通过邮箱系统在任务之间互相传递 你可以从一存
储池中分配和释放内存 你可以强迫一个任务等待中断 超时或者是从另一个任务或中断发出的
信号或信息

RTX51 Tiny

RTX51 Tiny 是一个 RTX51的子集 它可以很容易地在没有任何外部存储器的单片8051系统上运
转 除了下列例外 RTX51 Tiny支持许多在 RTX51中的特征
RTX51 Tiny仅支持时间片轮转任务切换和使用信号进行任务切换 不支持抢先式的任务切换
不包括消息历程 没有存储器池分配程序

一般情况下,如果单片机的内存比较小的情况下,使用RTX51-Tiny,下面是RTX51-Tiny的一些参数
在这里插入图片描述

用VScode配置rtx51-Tiny

前面发过VSCode新建C51工程的例子,新建一个普通C51工程后,点击构建器选项
在这里插入图片描述
选择Rtx52-Tiny并保存
在这里插入图片描述
引入所需要的头文件即可:
在这里插入图片描述

编写一个简单的RTX51-tiny程序

#include "REG52.H"
#include "RTX51TNY.H"
sbit led0=P2^0;
sbit led1=P2^1;
//任务0是任务入口,相当于主函数,运行后就可以删除了
void job0() _task_ 0{
    //创建启动任务1,2
    os_create_task(1);
    os_create_task(2);
    //初始化完成,删除任务0
    os_delete_task(0);
}
//task1
void job1() _task_ 1{
    led0=0;
    //等待其他任务发来信号,收到信号才继续往下执行
    // os_wait(K_IVL);
}
//task2
void job2() _task_ 2{
    //给任务发送一个信号,该任务收到信号后将解除等待状态
    // os_send_signal(1);
    led1=1;
}

TRX51-Tiny接口说明

按住CTRL鼠标左键点击RTX51TNY.H
在这里插入图片描述
可以看到里面接口并不是很多
在这里插入图片描述
这里我们根据头文件一一总结讲解

unsigned char os_create_task(unsigned char task_id)

将一个任务移入任务队列

参数名类型描述
task_idunsigned char任务ID

unsigned char os_delete_task(unsigned char task_id)

将一个任务移出任务队列

参数名类型描述
task_idunsigned char任务ID

unsigned char os_wait(unsigned char typ, unsigned char ticks, unsigned int dummy)

等待某事件

参数名类型描述
typunsigned charK_SIG 等待信号
K_TMO 等待超时
K_IVL 等待间隔
ticksunsigned char等待的定时器标数
dummyunsigned int没有定义的值,默认写0
返回值描述
unsigned charNOT_OK 参数错误
TMO_EVENT 超时事件
SIG_EVENT 信号事件
RDY_EVENT 就绪事件

unsigned char os_wait1 (unsigned char typ)

等待某事件

参数名类型描述
typunsigned charK_SIG 等待信号
K_TMO 等待超时
K_IVL 等待间隔

unsigned char os_wait2(unsigned char typ, unsigned char ticks)

等待某事件

参数名类型描述
typunsigned charK_SIG 等待信号
K_TMO 等待超时
K_IVL 等待间隔
ticksunsigned char等待的定时器标数

unsigned char os_send_signal(unsigned char task_id)

发送信号给某个任务,从任务信号调用

参数名类型描述
task_idunsigned char任务的ID

unsigned char os_clear_signal(unsigned char task_id)

清除发送信号

参数名类型描述
task_idunsigned char任务的ID

unsigned char isr_send_signal(unsigned char task_id)

发送信号给某个任务,从中断信号调用

参数名类型描述
task_idunsigned char任务的ID

void os_set_ready(unsigned char task_id)

设置任务就绪标志

参数名类型描述
task_idunsigned char任务的ID

void isr_set_ready(unsigned char task_id)

设置任务就绪标志

参数名类型描述
task_idunsigned char任务的ID

unsigned char os_running_task_id(void)

返回当前正在运行的任务号

unsigned char os_switch_task(void)

切换任务,切换到的任务必须就绪,否则不会运行

void os_reset_interval(unsigned char ticks)

用于纠正由于 os_wait 函数同时等待 K_IVL 和 K_SIG 事件而产生的时间问题

参数名类型描述
ticksunsigned char等待的定时器标数
  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YY博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值