单片机编程系列之RTOS
文章目录
- 前言
- 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.代码分层设计 在<代码大全>第五章中,可以把程序分为这几个层次: 第一层:软件系统 第二层:分解为子系统后包 第三 ...
- 单片机编程系列之分层设计2(怎样合理拆分子系统)
前言 本次学习了百问网的七天物联网直播课收获很多,写下笔记记录一下. 1.拆分原则 各个子系统之间要尽可能的独立. 按键点灯示例程序我们可以划分为按键系统.LED系统.业务系统: 按键系统就专注于按键 ...
- 利用串口对 89S 系列单片机编程
2006-05-01 12:23:28 利用串口对 89S 系列单片机编程 目前市场上不少的单片机具有ISP功能. ATMEL公司最近新推出的AT89SXXXX系列单片机也提供了一个SPI串行接口,让 ...
- 51单片机外设系列:LCD1602 的详细编程
前言,LCD1602是一个比较常用的单片机显示外设,下面我们从它的显示原理,来分析用51单片机编程的思路.另外结尾还提供了完成的程序代码参考. 一.LCD1602的外观.结构和基本参数 引脚功能解析: ...
- 我是怎么提高单片机编程能力的?
我对编程的兴趣源于黑客- 没想到最后竟然走了单片机开发的路线,或许是现实不允许我有梦想. 黑客的成长过于漫长,而我当务之急是找份工作糊口. 我并不是计算机专业,临近毕业对编程也一窍不通. 第一次自学的 ...
- 学单片机需要多少C语言基础,C语言单片机编程教程
很多学员和朋友经常找我给他们推荐C语言的书,他们可能想和我当年一样,闷头大干一场,学个几个月的C语言,把C语言吃透,再开始单片机程序开发! 别!别!别! 大家千万别这么干,我当年自学了3个月的C语言, ...
- 单片机汇编编程300例_pic单片机编程串烧,pic单片机汇编语言讲解下篇
看到这篇文章的朋友,想必大家对pic单片机均具备一定兴趣,或对pic单片机具备一定使用需求.前文中,小编曾对pic单片机汇编语言进行过部分讲解.本文中,将对pic单片机的清零等指令加以讲解,以帮助大家 ...
- 嵌入式牛人 | 这些单片机编程思想超硬核
来源:面包板社区,整理:晓宇 微信公众号:芯片之家(ID:chiphome-dy) 01 裸编程是什么? 先声明一个概念,裸编程,指的是在裸机上编写程序,裸机,在单片机领域就是指带着硬件的单片机控制系 ...
- 一位嵌入式工程师,硬核单片机编程思想!
(一)裸编程是什么? 先声明一个概念,裸编程,指的是在裸机上编写程序,裸机,在单片机领域就是指带着硬件的单片机控制系统,不要想歪咯. 在裸机上编程,就犹如在一片荒地上开垦,任何一锄头下去,都会碰到硬生 ...
最新文章
- OpenCV 4.2.0 发布,Intel 开源的计算机视觉库
- 北京/上海/杭州 | 蚂蚁金服智能引擎技术事业部招聘知识图谱算法工程师
- Nginx网站服务器
- 史上最全亚历山大大帝名言
- matlab表达一次函数,[转载]MATLAB数据拟合例子(一次函数、指数函数、双曲线)...
- java第六次实验——多线程
- nginx 过滤post报文 防火墙_十八般武艺之Nginx踩坑总结
- vs2012 出现 无法启动IIS express的解决方案
- 美国政府在将Web业务赶出美国
- 《jQuery移动开发》—— 2.1 语义HTML5
- 博客园复用别人的博客模板
- openstack安装配置(一)
- 【工程源码】基于FPGA的数码管字体,用来在液晶屏上显示数字
- JavaScript 关灯游戏
- Java基础:java线程状态
- Excel制作增长趋势图
- photoshop调人像冷色
- 香港部分超市因内地游客抢购奶粉发出限购令
- K8S污点容忍度调度
- 3dsmax2020安装报1603错误的解决方法