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,2os_create_task(1);os_create_task(2);//初始化完成,删除任务0os_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_id | unsigned char | 任务ID |
unsigned char os_delete_task(unsigned char task_id)
将一个任务移出任务队列
参数名 | 类型 | 描述 |
---|---|---|
task_id | unsigned char | 任务ID |
unsigned char os_wait(unsigned char typ, unsigned char ticks, unsigned int dummy)
等待某事件
参数名 | 类型 | 描述 |
---|---|---|
typ | unsigned char |
K_SIG 等待信号K_TMO 等待超时K_IVL 等待间隔
|
ticks | unsigned char | 等待的定时器标数 |
dummy | unsigned int | 没有定义的值,默认写0 |
返回值 | 描述 |
---|---|
unsigned char |
NOT_OK 参数错误TMO_EVENT 超时事件SIG_EVENT 信号事件RDY_EVENT 就绪事件
|
unsigned char os_wait1 (unsigned char typ)
等待某事件
参数名 | 类型 | 描述 |
---|---|---|
typ | unsigned char |
K_SIG 等待信号K_TMO 等待超时K_IVL 等待间隔
|
unsigned char os_wait2(unsigned char typ, unsigned char ticks)
等待某事件
参数名 | 类型 | 描述 |
---|---|---|
typ | unsigned char |
K_SIG 等待信号K_TMO 等待超时K_IVL 等待间隔
|
ticks | unsigned char | 等待的定时器标数 |
unsigned char os_send_signal(unsigned char task_id)
发送信号给某个任务,从任务信号调用
参数名 | 类型 | 描述 |
---|---|---|
task_id | unsigned char | 任务的ID |
unsigned char os_clear_signal(unsigned char task_id)
清除发送信号
参数名 | 类型 | 描述 |
---|---|---|
task_id | unsigned char | 任务的ID |
unsigned char isr_send_signal(unsigned char task_id)
发送信号给某个任务,从中断信号调用
参数名 | 类型 | 描述 |
---|---|---|
task_id | unsigned char | 任务的ID |
void os_set_ready(unsigned char task_id)
设置任务就绪标志
参数名 | 类型 | 描述 |
---|---|---|
task_id | unsigned char | 任务的ID |
void isr_set_ready(unsigned char task_id)
设置任务就绪标志
参数名 | 类型 | 描述 |
---|---|---|
task_id | unsigned 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 事件而产生的时间问题
参数名 | 类型 | 描述 |
---|---|---|
ticks | unsigned char | 等待的定时器标数 |
51单片机rtx51-Tiny嵌入式实时操作系统初试相关推荐
- 参考任哲的《嵌入式实时操作系统μC_OS-II原理及应用》,对UCOS的任务调度做了下整理。
参考任哲的< 嵌入式 实时操作系统μC_OS-II原理及应用>,对 UCOS 的任务调度做了下整理. UCOS有两种调度器,一种是任务级的调度器,一种是中断级的调度器.任务级的调度器由OS ...
- 嵌入式实时操作系统ucos-ii_「正点原子NANO STM32开发板资料连载」第三十六章 UCOSII 实验 1任务调度...
1)实验平台:alientek NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第三十六章 ...
- 嵌入式实时操作系统ucos-ii_「正点原子NANO STM32开发板资料连载」第三十八章 UCOSII 实验 3...
1)实验平台:alientek NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第三十八章 ...
- 【012】SylixOS嵌入式实时操作系统助力中国航天事业
SylixOS嵌入式实时操作系统助力中国航天事业 发布于2016年09月30日 2016年9月23日,翼辉信息与中国航天科技集团上海航天计算机技术研究所在上海完成SylixOS发行版风云翼辉嵌入式实时 ...
- 从零开始构建嵌入式实时操作系统2——重构
1.前言 本人是一个普通的中年程序员,并不是圈内的大牛,写嵌入式操作系统这一系列的文章并不是要显示自己的技术,而是出于对嵌入式的热爱.非常幸运,本人毕业后的十几年一直从事嵌入式行业,遇到过各种坑,也收 ...
- RT-Thread 创始人熊谱翔:我和 Linux、嵌入式实时操作系统 RT-Thread
我和 Linux.嵌入式实时操作系统 RT-Thread -- RT-Thread创始人熊谱翔,2015 年 接触 Linux 说起 Linux 应该从我在校园时期说起.我是在山城--重庆邮电学院念的 ...
- 嵌入式实时操作系统11——操作系统内核运行原理
先展示一个操作系统运行动态图 1.操作系统内核关键知识点 本文将用一个实际的工程例子来剖析操作系统内核运行原理.在此之前我们先回顾一下之前文章讲述的重点知识点. <嵌入式实时操作系统3--任务切 ...
- 嵌入式实时操作系统1——初识嵌入式实时操作系统
嵌入式实时操作系统是什么 嵌入式实时操作系统是一个特殊的程序,是一个支持多任务的运行环境.嵌入式实时操作系统最大的特点就是"实时性",如果有一个任务需要执行,实时操作系统会立即执行 ...
- 嵌入式实时操作系统μC/OS II(一)
嵌入式实时操作系统μC/OS II 为什么要学习μC/OS-II ㈠.凡从事嵌入式系统开发工作的人,必须对嵌入式操作系统有足够的了解. ㈡.对于初学者,从μC/OS-II开始是个明智的选择. 1.μC ...
最新文章
- 了解这些,你就可以在Spring启动时为所欲为了
- Android蓝牙串口程序开发
- 笔记整理-信息技术服务标准-ITSS组成要素
- 爱奇艺体验Serverless极致扩缩容,资源利用率提升40%
- 手动将自定制的WebPart部署到 SharePoint 2010 中
- java Lock 源码分析
- 构建LAMP平台及应用系统
- Springt Boot(7)----一种快捷搭建Spring Boot应用
- TypeScript 的声明文件的使用与编写
- 【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度
- 小程序的发布并发布为Android App流程
- FAT32文件系统的数据结构
- houdini大神自诉:为什么我要放弃maya I
- Windows系统中Word文档在插入公式时,公式按钮是灰色的(无法插入公式)的解决办法
- Spring Boot中使用JUnit5进行单元测试
- Android修改实战教程(漫放软件)
- Android 百度地图导航引擎初始化失败
- 【转载】CodeWarrior IDE使用Tips-如何编译生成和调用静态库
- asp.net动态网页制作视频教程
- 工具_在线生成安卓证书