历史上的今天
返回首页

历史上的今天

今天是:2025年04月28日(星期一)

正在发生

2020年04月28日 | 51单片机上实时多任务操作系统-教程

2020-04-28 来源:eefocus

RTX51是用与8051系列的实时多任务RTOS 1。

RTX 两个版本区别:

RTX51 FULL:允许4个优先任务循环和切换,并行利用终端,支持邮箱系统的信号和消息传递

RTX TINY 子集,不支持占先式任务切换,不能进行信息处理

RTX的循环任务调度

准并行

利用内部定时器的中断实现定时

使用时不需要包含main()函数,自动从任务0开始

如果包含main()函数,则需要利用os-start-system 或 os-creat-task来启动

Example1:


ps:注意事项:


关于Keil报错 *** FATAL ERROR L210: I/O ERROR ON INPUT FILE:缺少RTX51.LIB 


需要在项目里面选择操作系统,RTX-51TINY   


例子:

程序启动时从任务0开始,同时创建任务1,任务 1等待任务0产生信号0,信号量为0时任务挂起,为1时清除信号标准并继续执行任务-》启动任务2,任务2执行一段时间后删除自身任务。


#include

#include

sbit LED1=P0^0;

sbit LED2=P0^1;

sbit LED3=P0^2;

long cnt;

job0() _task_ 0

{

    os_create_task(1);

    while(1)

    {

        LED1=~LED1;

        os_wait2(K_TMO,10);

        cnt++;

        if(cnt==20)

            os_send_signal(1);

    }

}

job1() _task_ 1

{

    while(1)

    {

        LED2=~LED2;

        os_wait(K_SIG,0,0);

        os_create_task(2);

        cnt=0;

    }

}


job2() _task_ 2

{

        LED3=0;

        os_wait2(K_TMO,50);

        LED3=1;

        os_delete_task(2);

        return 0;

}


优先级:

当job0 发送信号到job1之后,job1并不是立即执行,而是等待job0的超时出现后才开始执行,默认情况下。所有优先级均为0


优先级可以定为0-3;


重新定义如下:

 

job1() _task_ 1 _priority_1

{


}


此时,当1个信号量到达之后,将马上开始执行。

中断

RXT51可以与中断并行工作,中断函数可以与RTX51通讯,向RTX51的任务发送信号或消息


RTX51-Tiny 本身不包括任何中断管理,对中断允许寄存器的操作同普通一样。


由于内部使用了定时器0,因此不允许禁止定时器0中断  


isr_send_message /isr_recv_messge 从中断中发送或接受信息


时间片切换

时间片的持续时间可以通过配置文件conf_tny.a51中变了TIMESHARING来设置


RTX51 TINY配置

INT_CLOCK 时钟间隔

TIMESHARING 循环任务切换时间片

INT_REGBANK 定义哪一个寄存器作为中断 默认组1

RANTOP 定义TINY使用内部RAM的最高地址 STC系列可以使用FFH

FREE_STACK 定义自由栈区的大小,以字节为单位,默认值20

STACK_ERROR 当RTX检测到栈区出错时,将启用该宏

推荐阅读

史海拾趣

Emmoco公司的发展小趣事

Emmoco公司成立于XXXX年,由一群富有远见和创新精神的电子工程师创立。公司自创立之初就明确了以技术创新为核心的发展道路,专注于研发高性能的电子元器件和模块。经过初期的不懈努力,Emmoco成功推出了一系列具有竞争力的产品,为公司的后续发展奠定了坚实的基础。

Degson Electronics Co Ltd公司的发展小趣事

Degson Electronics Co., Ltd.成立于1990年,当时主要专注于电子连接器的研发和生产。在初创阶段,公司面临了诸多挑战,包括资金短缺、市场竞争激烈以及技术壁垒等。然而,Degson凭借其创始团队对电子行业的深入理解和坚定信念,成功研发出了一系列高质量、性能稳定的电子连接器产品,并逐渐在市场上赢得了客户的认可。

GainSpan ( Telit)公司的发展小趣事

为了进一步提升技术实力和创新能力,风华高科于1998年成为全国36家扩大博士后试点企业之一,并建立起国家级首批博士后流动工作站。这一举措为公司吸引了大量高层次人才,为公司的技术研发和产品创新提供了有力支持。同时,公司还注重内部人才培养和团队建设,形成了一支高素质的研发和生产队伍。这些人才为公司的发展注入了源源不断的动力。

General Diode Corp公司的发展小趣事
用于对焊机内部的电源模块、电磁振动系统等关键部件进行冷却,确保其正常运行。
EDO Corp公司的发展小趣事

进入1950年代,Eclipse Magnetics迎来了一次重要的创新。公司决定将磁铁涂上红色,这一独特的红色磁铁迅速在市场上获得了认可。同时,公司还设计了与红色磁铁相配的马蹄形标志,这一标志后来成为Eclipse Magnetics的国际通用标记。随着品牌的国际化,Eclipse Magnetics的产品开始进入全球市场。

Broadcom(博通)公司的发展小趣事

1991年,加州大学洛杉矶分校的工程学教授亨利·山缪利和他的博士班学生亨利·尼古拉斯,以各出资5000美元的方式,在美国加州尔湾小镇共同创立了博通公司。初创时期,博通主要致力于开发机顶盒的宽带通信芯片。随着技术的不断进步和市场需求的增长,博通的产品逐渐受到业界的认可,销售额稳步上升。

问答坊 | AI 解惑

PCB 生产工艺流程图

PCB 生产工艺流程图…

查看全部问答>

麻省理工学院2008年高性能嵌入式计算手册,抢鲜分享

2008年新出版的.还热的呢 学到了一次发大容量的方法…

查看全部问答>

DSP复位电路问题

DSP复位电路问题 在手动复位电路中加入两个7414施密特触发器 防止外部干扰 但是好像不能使用 TI 的SN7414这个芯片 存在电平转换问题 是不是电平转换反而会变麻烦了? 如果不使用这种芯片 有那种7414可用? 可以不接7414吗? 另外看门狗复位 ...…

查看全部问答>

探讨一下ARM以及RVDS的使用

xinzha 最近太闲,想给自己找点事做,开个贴跟大家交流一下ARM和RVDS的使用,共同进步一下,说的不对的地方请多多指教。 ARM是个充满争议的架构,有人说它是RISC,因为它基本做到了指令等长以及指令周期可预期(不考虑ARM/THUMB混用),并且指令 ...…

查看全部问答>

如何使用ADC0808对音频进行采样的呢?

我最近在做毕业设计,想搞一个方波随输入进行一个动态的变化,有点想千千静听一样 …

查看全部问答>

自己公司急需请人帮忙做电机控制,价格面谈

自己公司急需请人帮忙做电机控制,价格面谈 要求:先通过采集板卡采集一组数据再运算分析下,然后再发出控制命令控制电机的运动. 可以提供材料.那位电子工程师有空可联系 13501789572 白树威 …

查看全部问答>

NOKIA日本研发中心招聘

诺基亚日本研发中心属于Multimedia Business Unit,是全球8 个研发中心之一。另外7个研发中心分布于芬兰、英国、德国、加拿大和印度。 Multimedia Business Unit在诺基亚高新技术领域领先于其它BU,与中国的MPBU不同,专门研发高端产品。 ...…

查看全部问答>

【开源活动建议帖】新年新气象论坛能不能搞一个运动控制卡的DIY活动

RT 最近对运动控制很感兴趣!~不知坛子里有没有愿意一起做的!~…

查看全部问答>

从单片机初学者迈向单片机工程师[转]

这个我从eehome贴过来的。写的非常的好。我们用学单片机不要停在演示的基础上。只能让单片机完成局部事。这样我们永远不会走出流水灯地狱!!! 学习单片机也已经有几年了,藉此机会和大家聊一下我学习过程中的一些经历和想法吧。也感谢一线工人 ...…

查看全部问答>

STM32可以用ST-Link仿真,却不能用山寨的J-link仿真

STM32被锁了,然后我用JLinkSTM32.exe解锁。解锁后,可以用ST-Link仿真,用山寨J-Link却总是在点击完go之后自动停止。这个J-Link在另一片芯片上用的好好的,所以J-Link肯定没问题。现在是用JLINK如果一步一步step over整个程序可以正常运行。 ...…

查看全部问答>