文章目录

  • 前言
  • 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. scala 提交任务
  2. 用HttpListener做web服务器,简单解析post方式过来的参数、上传的文件
  3. js 递归查询所有的叶子结点_json树递归js查询json父子节点
  4. ajax技术实战-张晨光-专题视频课程
  5. 服务器应用日志清理,Linux下Tomcat日志定期清理
  6. 【英语学习】【WOTD】resurrection 释义/词源/示例
  7. 黑群晖linux删除文件夹命令,手把手教你黑群晖(二)
  8. 2022 年面试工具篇 Jmeter 接口面试题及答案
  9. Hadoop常用端口号汇总
  10. echarts实现世界地图,给不同数值的国家着色,并根据经纬度在对应位置上添加标签(一)
  11. xp 计算机配置,xp怎么查看电脑配置
  12. 你是编程高手还是IT民工
  13. 前5名:Raspberry Pi龙卷风警告系统,用于物联网开发的4个开放式开发板等
  14. Flash Platform 游戏开发入门
  15. FileZilla的安装流程
  16. windows用运行命令启动程序
  17. MySQL安装2出现Typical_Mysql安装 - osc_c7lpn2ge的个人空间 - OSCHINA - 中文开源技术交流社区...
  18. java从小白到架构师学习路线
  19. idea修改单行注释颜色
  20. 51单片机RC522无线射频IC卡驱动教程

热门文章

  1. 钻井液中PHP是指什么,钻井液是什么?关于钻井液的详细介绍
  2. oppo R9s 远程刷机 成功 使用到的软件记录
  3. 中望3D2022 鼠标应用
  4. eclipse luna 安装svb
  5. 夜雨数竞笔记-不定积分(7)-待定系数法
  6. gensim中的word2vec的使用
  7. Android原生集成RN的坑:Trying to add a root view with an explicit id already set.
  8. [wp]ctfshow-web入门-爆破
  9. 反假币考试试题及答案
  10. 服务器显示错误英文,常见【英文错误提示】解答