- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
系列单片机的多任务操作系统
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实时多任务系统特点 任务调度 信息传递 中断 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 当前任务号函数os_running_task_id 信号发送函数os_send_signal 等待函数os_wait 等待函数os_wait1 等待函数os_wait2 RTX-51与单任务程序的比较 简单的单任务C51程序 01 #include reg52.h 02 #include stdio.h 03 int count=0; 04 void main() //主函数 05 { 06 while(1) //主循环 07 { 08 count++; //计数器加1 09 printf(Single Task: count=%d,count); //输出 10 if(count==500) 11 { 12 count=0; //归零 13 } 14 } 15 } RTX-51与单任务程序的比较 多任务循环C51程序 01 #include reg52.h 02 #include stdio.h 03 int count0=0; 04 int count1=0; 05 void main() //主函数 06 { 07 while(1) //主循环 08 { 09 count0++; //计数器count0加1 10 printf(Single Process Task0:count0=%d\n,count0); 11 count1++; //计数器count1加1 12 printf(Single Process Task1:count1=%d\n,count1); 13 if(count0==500) 14 { 15 count0=0; 16 } 17 if(count1==500) 18 { 19 count1=0; 20 } 21 } 22 } RTX-51与单任务程序的比较 多任务RTX-51程序 01 #include RTX51TNY.h 02 #include reg52.h 03 #include stdio.h 04 int count0=0; 05 int count1=0; 06 Thread0 () _task_ 0 //任务0 07 { 08 os_create_task(1); //创建任务1 09 while(1) 10 { 11 printf(Task0:count0=%d\n,count0++); //打印输出count0 12 if(count0==500) 13 { 14 count0=0; 15 } 16 } 17 } 18 Thread1 () _task_ 1 //任务1 19 { 20 while(1) 21 { 22 printf(Task1:count1=%d\n,count1++); //打印输出count1 23 if(count1==500)
文档评论(0)