文章目录

  • 前言
  • RTOS是什么?
  • 怎样使用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的优势在于可以让多个任务轮流执行,实时响应,不再需要我们去把任务函数按照状态机那样拆分,降低开发成本,充分运用单片机的功能。

单片机编程系列之RTOS相关推荐

  1. 单片机编程系列之分层设计1

    前言 本次学习了百问网的七天物联网直播课收获很多,写下笔记记录一下. 1.代码分层设计 在<代码大全>第五章中,可以把程序分为这几个层次: 第一层:软件系统 第二层:分解为子系统后包 第三 ...

  2. 单片机编程系列之分层设计2(怎样合理拆分子系统)

    前言 本次学习了百问网的七天物联网直播课收获很多,写下笔记记录一下. 1.拆分原则 各个子系统之间要尽可能的独立. 按键点灯示例程序我们可以划分为按键系统.LED系统.业务系统: 按键系统就专注于按键 ...

  3. 利用串口对 89S 系列单片机编程

    2006-05-01 12:23:28 利用串口对 89S 系列单片机编程 目前市场上不少的单片机具有ISP功能. ATMEL公司最近新推出的AT89SXXXX系列单片机也提供了一个SPI串行接口,让 ...

  4. 51单片机外设系列:LCD1602 的详细编程

    前言,LCD1602是一个比较常用的单片机显示外设,下面我们从它的显示原理,来分析用51单片机编程的思路.另外结尾还提供了完成的程序代码参考. 一.LCD1602的外观.结构和基本参数 引脚功能解析: ...

  5. 我是怎么提高单片机编程能力的?

    我对编程的兴趣源于黑客- 没想到最后竟然走了单片机开发的路线,或许是现实不允许我有梦想. 黑客的成长过于漫长,而我当务之急是找份工作糊口. 我并不是计算机专业,临近毕业对编程也一窍不通. 第一次自学的 ...

  6. 学单片机需要多少C语言基础,C语言单片机编程教程

    很多学员和朋友经常找我给他们推荐C语言的书,他们可能想和我当年一样,闷头大干一场,学个几个月的C语言,把C语言吃透,再开始单片机程序开发! 别!别!别! 大家千万别这么干,我当年自学了3个月的C语言, ...

  7. 单片机汇编编程300例_pic单片机编程串烧,pic单片机汇编语言讲解下篇

    看到这篇文章的朋友,想必大家对pic单片机均具备一定兴趣,或对pic单片机具备一定使用需求.前文中,小编曾对pic单片机汇编语言进行过部分讲解.本文中,将对pic单片机的清零等指令加以讲解,以帮助大家 ...

  8. 嵌入式牛人 | 这些单片机编程思想超硬核

    来源:面包板社区,整理:晓宇 微信公众号:芯片之家(ID:chiphome-dy) 01 裸编程是什么? 先声明一个概念,裸编程,指的是在裸机上编写程序,裸机,在单片机领域就是指带着硬件的单片机控制系 ...

  9. 一位嵌入式工程师,硬核单片机编程思想!

    (一)裸编程是什么? 先声明一个概念,裸编程,指的是在裸机上编写程序,裸机,在单片机领域就是指带着硬件的单片机控制系统,不要想歪咯. 在裸机上编程,就犹如在一片荒地上开垦,任何一锄头下去,都会碰到硬生 ...

最新文章

  1. OpenCV 4.2.0 发布,Intel 开源的计算机视觉库
  2. 北京/上海/杭州 | 蚂蚁金服智能引擎技术事业部招聘知识图谱算法工程师
  3. Nginx网站服务器
  4. 史上最全亚历山大大帝名言
  5. matlab表达一次函数,[转载]MATLAB数据拟合例子(一次函数、指数函数、双曲线)...
  6. java第六次实验——多线程
  7. nginx 过滤post报文 防火墙_十八般武艺之Nginx踩坑总结
  8. vs2012 出现 无法启动IIS express的解决方案
  9. 美国政府在将Web业务赶出美国
  10. 《jQuery移动开发》—— 2.1 语义HTML5
  11. 博客园复用别人的博客模板
  12. openstack安装配置(一)
  13. 【工程源码】基于FPGA的数码管字体,用来在液晶屏上显示数字
  14. JavaScript 关灯游戏
  15. Java基础:java线程状态
  16. Excel制作增长趋势图
  17. photoshop调人像冷色
  18. 香港部分超市因内地游客抢购奶粉发出限购令
  19. K8S污点容忍度调度
  20. 3dsmax2020安装报1603错误的解决方法

热门文章

  1. Python用*输出菱形
  2. mxGraph API
  3. 【THREE源码解析篇】THREE.Matrix4源码详解
  4. Android中ImageView显示网络图片
  5. 颜值爆棚:大朋VR E3基础版真实体验评测
  6. 用HTTP proxy module配置一个简单反向代理服务器
  7. 你上清华我考北大,顶峰相见!化竞党的甜蜜爱情故事
  8. facebook支持3D发贴
  9. 使用sklearn进行kmeans实战
  10. GIS中相交的定义(OGC相交的定义)