单片机编程系列之RTOS


前言

本次学习了百问网的七天物联网直播课收获很多,写下笔记记录一下。

RTOS是什么?

实时操作系统(Real-time operating system, RTOS),又称即时操作系统,它会按照排序运行、管理系统资源,并为开发应用程序提供一致的基础。
实时操作系统与一般的操作系统相比,最大的特色就是“实时性”,如果有一个任务需要执行,实时操作系统会马上(在较短时间内)执行该任务,不会有较长的延时。这种特性保证了各个任务的及时执行。
(维基百科定义)

实时操作系统(rtos),如果你的项目需要高效的实时性,就可以使用这种系统。

怎样使用RTOS?

RTOS常见的有freertos,VxWorks,RT-Thread,uCOS,QNX等等,国内比较火的是freertos和RT-Thread.我推荐学习freertos,你也可以自己选择一款喜欢的学习。下面我们大概讲下如何使用,所有的RTOS系统都差不多,都可以使用。

假设我们要同时执行两个函数AB(AB也代表两个任务),AB执行的时间都很长,我们可以使用裸机程序,把AB函数都改造为“状态机”,但如果MCU的性能较好的话,我们可以使用RTOS,这两种方法的核心都是“分时复用”:

  • 分时: 函数A运行一小段时间,函数B再运行一段时间,如此循环,交替运行。
  • 复用:复用MCU,充分发挥其效能。

我们举个示例:
假如一个妈妈要同时给小孩喂饭和回复同事消息,她可以一心多用,它可以这样做:

  • 左手拿勺子,给小孩喂饭
  • 右手敲键盘,回复同事
  • 两不耽误,小孩“以为”妈妈在专心喂饭,同事“以为”她在专心聊天
  • 但是脑子只有一个啊,虽然说“一心多用”,但是谁能同时思考两件事?
  • 只是她反应快,上一秒钟在考虑夹哪个菜给小孩,下一秒钟考虑给同事回复什么信息

代码结构如下(示例):

在这里插入图片描述
代码如下:

喂饭() 
{ 
	while (1)
	{ 
		喂一口饭(); 
	} 
}

回信息() 
{ 
	while (1)
	{ 
		回一个信息(); 
	}
}

void main() 
{ 
	createtask(喂饭); 
	createtask(回信息); 
	start_scheduler(); 
	while (1) 
	{ 
		sleep(); 
	} 
}

总结

RTOS的优势在于可以让多个任务轮流执行,实时响应,不再需要我们去把任务函数按照状态机那样拆分,降低开发成本,充分运用单片机的功能。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值