历史上的今天
今天是: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检测到栈区出错时,将启用该宏
上一篇:RTX51 tiny——51MCU上的多任务操作系统
下一篇:c51单片机寻址结构
史海拾趣
|
xinzha 最近太闲,想给自己找点事做,开个贴跟大家交流一下ARM和RVDS的使用,共同进步一下,说的不对的地方请多多指教。 ARM是个充满争议的架构,有人说它是RISC,因为它基本做到了指令等长以及指令周期可预期(不考虑ARM/THUMB混用),并且指令 ...… 查看全部问答> |
|
自己公司急需请人帮忙做电机控制,价格面谈 要求:先通过采集板卡采集一组数据再运算分析下,然后再发出控制命令控制电机的运动. 可以提供材料.那位电子工程师有空可联系 13501789572 白树威 … 查看全部问答> |
|
诺基亚日本研发中心属于Multimedia Business Unit,是全球8 个研发中心之一。另外7个研发中心分布于芬兰、英国、德国、加拿大和印度。 Multimedia Business Unit在诺基亚高新技术领域领先于其它BU,与中国的MPBU不同,专门研发高端产品。 ...… 查看全部问答> |
|
这个我从eehome贴过来的。写的非常的好。我们用学单片机不要停在演示的基础上。只能让单片机完成局部事。这样我们永远不会走出流水灯地狱!!! 学习单片机也已经有几年了,藉此机会和大家聊一下我学习过程中的一些经历和想法吧。也感谢一线工人 ...… 查看全部问答> |
|
STM32可以用ST-Link仿真,却不能用山寨的J-link仿真 STM32被锁了,然后我用JLinkSTM32.exe解锁。解锁后,可以用ST-Link仿真,用山寨J-Link却总是在点击完go之后自动停止。这个J-Link在另一片芯片上用的好好的,所以J-Link肯定没问题。现在是用JLINK如果一步一步step over整个程序可以正常运行。 ...… 查看全部问答> |




