2009|3

1万

帖子

25

TA的资源

版主

楼主
 

【SAMR21新玩法】11. 多任务 [复制链接]

 

多任务是现代嵌入式系统的一个特点,从小容量的8位单片机,到32位arm,以至更复杂的控制器,都支持多任务功能。资源少的单片机只能通过时间片方式分时运行多任务,而多核MCU可以同时并行多个任务。

 

在makecode中,也支持多任务功能。在软件中它被叫做“run in parallel”(并行运行)。

 

 

run in parallel的使用方法和我们常见的RTOS非常相似,需要在它内部放入一个无限循环,将需要执行的任务放在循环中。此外还要放置暂停模块,这样任务之间才能切换。一个典型的多任务程序结构如下:

 

 

在makecode中,多任务的使用也很容易,将它放在初始化(on start)就可以了。如果有多个任务,就依次加到初始化部分。下面是一个基本的多任务程序,主循环(任务1)中每500ms打印一个不断递增的变量y,任务2中每秒打印0-10随机数,任务3显示一个呼吸灯。

 


此内容由EEWORLD论坛网友dcexpert原创,如需转载或用于商业用途需征得作者同意并注明出处

点赞 关注
 
 

回复
举报

1万

帖子

25

TA的资源

版主

沙发
 

在线版本:

 

https://makecode.com/_3Do4v8MiPCcR

 

 
 
 

回复

1万

帖子

25

TA的资源

版主

板凳
 

MakeCode的多任务可以看成是一个非占先式的、无优先级、时间片轮询的RTOS,一个任务执行后,通过暂停模块切换到其它任务,因此暂停模块是必须使用的,否则会停在一个任务中,无法执行其它任务。

 
 
 

回复

1万

帖子

25

TA的资源

版主

4
 

无限循环(forover)也是一个特殊的任务,它不需要在加入循环模块和暂停模块,因为无限循环模块中已经内置了这些功能。

 

一个程序中可以包含多个无限循环,利用无限循环实现多任务。不过对于复杂的程序,并不推荐使用多个无限循环实现多任务,一是因为这会让程序结构变得复杂,难以维护;此外无限循环的时间精度也不如run in parallel模块。

 

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表