第20章-51系列单片机的多任务操作系统+.ppt_第1页
第20章-51系列单片机的多任务操作系统+.ppt_第2页
第20章-51系列单片机的多任务操作系统+.ppt_第3页
第20章-51系列单片机的多任务操作系统+.ppt_第4页
第20章-51系列单片机的多任务操作系统+.ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、21天学51单片机开发,第二十讲:51系列单片机的多任务操作系统,课程安排,RTX-51实时多任务操作系统简介 RTX-51 Tiny的任务管理 RTX-51 Tiny的系统函数 RTX-51与单任务程序的比较 RTX-51循环任务调度程序设计 RTX-51事件任务调度程序设计 RTX-51信号任务调度程序设计 RTX-51优先级及抢先任务切换程序设计,RTX-51实时多任务操作系统简介,多任务操作系统也就是可以运行多个程序的平台。 RTX-51是一种适用于51系列单片机的实时多任务操作系统(RTOS)。 RTX-51实时多任务系统 RTX-51 FULL RTX-51 Tiny,RTX-51

2、实时多任务系统特点,任务调度 信息传递 中断 CAN通信 BITBUS通信,RTX-51 Tiny的任务管理,在RTX-51 Tiny中支持5种任务状态,任何一个任务必须处于其中一个确定的状态。 READY RUNING WAITING DELETED TIMEOUT,RTX-51 Tiny支持的事件,信号(SIGNAL) 超时(TIMEOUT) 时间间隔事件(INTERVAL),RTX-51 Tiny的系统函数,信号发送函数isr_send_signal 信号标志清除函数os_clear_signal 任务启动函数os_create_task 任务删除函数os_delete_task 当前任

3、务号函数os_running_task_id 信号发送函数os_send_signal 等待函数os_wait 等待函数os_wait1 等待函数os_wait2,RTX-51与单任务程序的比较,简单的单任务C51程序,01#include 02#include 03int count=0; 04void main()/主函数 05 06while(1)/主循环 07 08count+;/计数器加1 09printf(Single Task: count=%d,count);/输出 10if(count=500) 11 12count=0;/归零 13 14 15,RTX-51与单任务程序的比

4、较,多任务循环C51程序,01#include 02#include 03int count0=0; 04int count1=0; 05void main()/主函数 06 07while(1)/主循环 08 09count0+;/计数器count0加1 10printf(Single Process Task0:count0=%dn,count0); 11count1+;/计数器count1加1 12printf(Single Process Task1:count1=%dn,count1); 13if(count0=500) 14 15count0=0; 16 17if(count1=5

5、00) 18 19count1=0; 20 21 22,RTX-51与单任务程序的比较,多任务RTX-51程序,01#include 02#include 03#include 04int count0=0; 05int count1=0; 06Thread0 () _task_ 0 /任务0 07 08os_create_task(1);/创建任务1 09while(1) 10 11printf(Task0:count0=%dn,count0+); /打印输出count0 12if(count0=500) 13 14count0=0; 15 16 17 18Thread1 () _task_

6、 1 /任务1 19 20while(1) 21 22printf(Task1:count1=%dn,count1+);/打印输出count1 23if(count1=500) 24 25count1=0; 26 27 28,RTX-51循环任务调度程序设计,RTX-51循环任务调度是按照预先划分的时间片来循环轮流执行多个任务的。,01#include 02#include 03#include 04Thread0 () _task_ 0 /任务0 05 06P1=0 x00;/初始化 07P2=0 x00; 08os_create_task(1);/创建任务1 09while(1) 10 1

7、1P1=P1+1;/P1端口递增 12 13 14Thread1 () _task_ 1 /任务1 15 16while(1) 17 18P2=P2+1;/P2端口递增 19 20,RTX-51事件任务调度程序设计,RTX-51事件任务调度是使用事件来实现多任务之间切换的调度方式。,01#include 02#include 03#include 04int count0=0; 05int count1=0; 06Thread0 () _task_ 0 /任务0 07 08os_create_task(1); /创建任务1 09while(1) 10 11printf(Task0:count0

8、=%dn,count0+);/打印输出count0 12os_wait(K_TMO,2);/暂停两个信号 13if(count0=500) 14 15count0=0; 16 17 18 19Thread1 () _task_ 1 /任务1 20 21while(1) 22 23printf(Task1:count1=%dn,count1+);/打印输出count1 24os_wait(K_TMO,3);/暂停三个信号 25if(count1=500) 26 27count1=0; 28 29 30,RTX-51信号任务调度程序设计,RTX-51信号任务调度是使用信号来完成多任务之间切换的调度

9、方式。,01#include 02#include 03#include 04int count0=0; 05int count1=0; 06Thread0 () _task_ 0 /任务0 07 08os_create_task(1); /创建任务1 09while(1) 10 11printf(Task0:count0=%dn,count0+); /打印输出count0 12if(count0=10) 13 14os_send_signal(1);/向任务1发送信号 15count0=0; 16 17 18 19Thread1 () _task_ 1 /任务1 20 21while(1)

10、22 23os_wait(K_SIG,0,0);/等待信号 24printf(Task1:count1=%dn,count1+);/打印输出count1 25 26,RTX-51优先级及抢先任务切换程序设计,抢先任务切换是根据不同任务的优先级来执行不同任务的调度方式。,01#include 02#include 03#include 04int count0=0; 05int count1=0; 06Thread0 () _task_ 0 /任务0 07 08os_create_task(1); /创建任务1 09while(1) 10 11printf(Task0:count0=%dn,count0+); /打印输出count0 12if(count0=10) 13 14os_send_signal(1);/向任务1发送信号 15count0=0; 16 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论