单片机程序设计模式

RTOS:多任务拆分交叉执行

Q:状态机和多任务模式有什么区别

Q:任务创建和任务调度器是什么?

裸机程序的设计模式可以分为:轮询、前后台、定时器驱动、基于状态机。前面三种方
法都无法解决一个问题:假设有 A、B 两个都很耗时的函数,无法降低它们相互之间的影响。
第 4 种方法可以解决这个问题,但是实践起来有难度。

1、轮询模式

2、前后台

所谓“前后台”就是使用中断程序。假设收到同事发来的信息时,电脑会发出“滴”的
一声,这时候妈妈才需要去回复信息。

如果电脑声音“滴”、小孩声音“啊”不会同时、相近发出,那么“回一个信息”、“喂一口饭”相互之间没有影响。在不能满足这个前提的情况下,比如“滴”、“啊”同时响起,先“回一个信息”时就会耽误“喂一口饭”,这种场景下程序遭遇到了轮询模式的缺点:函数相互之间有影响。

3、定时器驱动

每 2 分钟给小孩喂一口饭,需要每 5 分钟给同事回复信息。 

这种模式适合调用周期性的函数,并且每一个函数执行的时间不能超过一个定时器周期。
如果“喂一口饭”很花时间,比如长达 10 分钟,那么就会耽误“回一个信息”;反过来也是
一样的,如果“回一个信息”很花时间也会影响到“喂一口饭”;这种场景下程序遭遇到了
轮询模式的缺点:函数相互之间有影响。

 

4、状态机

以“喂一口饭”为例,函数内部拆分为 4 个状态:舀饭、喂饭、舀菜、喂菜。每次执行
“喂一口饭”函数时,都只会执行其中的某一状态对应的代码。以前执行一次“喂一口饭”
函数可能需要 4 秒钟,现在可能只需要 1 秒钟,就降低了对后面“回一个信息”的影响。
同样的,“回一个信息”函数内部也被拆分为 3 个状态:查看信息、打字、发送。每次 

执行这个函数时,都只是执行其中一小部分代码,降低了对“喂一口饭”的影响。
使用状态机模式,可以解决裸机程序的难题:假设有 A、B 两个都很耗时的函数,怎样
降低它们相互之间的影响。但是很多场景里,函数 A、B 并不容易拆分为多个状态,并且这
些状态执行的时间并不好控制。所以这并不是最优的解决方法,需要使用多任务系统。

5、多任务系统——多任务模式

本质是:交叉执行,t1~t5 和 ta~te 交叉执行

6、多任务系统——互斥操作

执行多个任务可能会“同时”访问某些资源,需要增加保护措施以防止混乱。比如任务 A、B 都要使用串口,能否使用一个全局变量让它们独占地、互斥地使用串口

7、多任务系统——同步操作

如果任务之间有依赖关系,比如任务 A 执行了某个操作之后,需要任务 B 进行后续的处
理。

当任务 A 处理完事情后,再唤醒任务 B。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/873185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从PyTorch官方的一篇教程说开去(2 - 源码)

先上图,上篇文章的运行结果,可以看到,算法在迭代了200来次左右达到人生巅峰,倒立摆金枪不倒,可以扛住连续200次操作。不幸的是,然后就出现了大幅度的回撤,每况愈下,在600次时候居然和…

JVM知识点总结(全网最详细)!!!!

JVM知识总结 运行时数据区域程序计数器Java虚拟机栈局部变量表 StackOverflowError异常和OutOfMemoryError异常本地方法栈Java堆方法区运行时常量池 对象的创建对象的内存分配对象的内存布局对象头实例数据对齐填充 对象的访问定位使用句柄直接指针使用句柄和直接指针的优缺点 …

PHP房产中介租房卖房平台微信小程序系统源码

​🏠【租房卖房新选择】揭秘房产中介小程序,一键搞定置业大事!🏡 🔍【开篇:告别繁琐,拥抱便捷】🔍 还在为找房子跑断腿?为卖房发愁吗?今天给大家安利一个超…

【.NET全栈】ASP.NET开发Web应用——AJAX开发技术

文章目录 前言一、ASP.NET AJAX基础1、AJAX技术简介2、ASP.NET AJAX技术架构 二、ASP.NET AJAX服务器端扩展1、声明ScriptManager控件2、使用ScriptManager分发自定义脚本3、在ScriptManager中注册Web服务4、处理ScriptManager中的异常5、编程控制ScriptManager控件6、使用Upda…

如何高效定制视频扩散模型?卡内基梅隆提出VADER:通过奖励梯度进行视频扩散对齐

论文链接:https://arxiv.org/pdf/2407.08737 git链接:https://vader-vid.github.io/ 亮点直击: 引入奖励模型梯度对齐方法:VADER通过利用奖励模型的梯度,对多种视频扩散模型进行调整和对齐,包括文本到视频和…

如何评估 5G 毫米波相控阵天线模块

5G 新无线电 (5G NR) 是空中接口或无线接入网络 (RAN) 技术的行业标准和全球规范。它涵盖 6 GHz 及以下频率(称为 FR1)和 24 GHz 至 50 GHz 或更高频段(称为 FR2 或 mmWave)的运行。该技术可用于固定或移动接入、回程和日益流行的…

一些简单的基本知识(与C基本一致)

一、注释 1.单行注释://(快捷键:ctrlshift?,可以选择多行) 2.多行注释:/* 文本 */ 二、变量 变量的作用是给一段内存空间起名,方便操作内存中的数据。 通过赋予某数据的…

逆向案例二十五——webpack所需模块函数很多,某翼云登录参数逆向。

解决步骤: 网址:aHR0cHM6Ly9tLmN0eXVuLmNuL3dhcC9tYWluL2F1dGgvbG9naW4 不说废话,密码有加密,直接搜索找到疑似加密位置打上断点。 再控制台打印,分析加密函数 有三个处理过程,b[g]得到的是用户名,b[f] 对…

数据结构初阶·排序算法(内排序)

目录 前言: 1 冒泡排序 2 选择排序 3 插入排序 4 希尔排序 5 快速排序 5.1 Hoare版本 5.2 挖坑法 5.3 前后指针法 5.4 非递归快排 6 归并排序 6.1递归版本归并 6.2 非递归版本归并 7 计数排序 8 排序总结 前言: 目前常见的排序算法有9种…

Torch-Pruning 库入门级使用介绍

项目地址:https://github.com/VainF/Torch-Pruning Torch-Pruning 是一个专用于torch的模型剪枝库,其基于DepGraph 技术分析出模型layer中的依赖关系。DepGraph 与现有的修剪方法(如 Magnitude Pruning 或 Taylor Pruning)相结合…

TCP重传机制详解

1.什么是TCP重传机制 在 TCP 中,当发送端的数据到达接收主机时,接收端主机会返回⼀个确认应答消息,表示已收到消息。 但是如果传输的过程中,数据包丢失了,就会使⽤重传机制来解决。TCP的重传机制是为了保证数据传输的…

React安装(学习版)

1. 安装Node.js和npm 首先,确保你的电脑上已经安装了Node.js和npm(Node Package Manager)。你可以从 Node.js官网 下载安装包并按照提示进行安装。安装完成后,可以在命令行终端中验证Node.js和npm是否正确安装: node …

【Node.js】初识 Node.js

Node.js 概念 Node.js 是一个开源与跨平台的 JavaScript运行时环境 ,在浏览器外运行 V8 JavaScript 引擎(Google Chrome的内核),利用事件驱动、非阻塞和异步输入输出 等技术提高性能。 可以理解为 Node.js就是一个服务器端的、非阻塞式 l/O 的、事件驱…

01 MySQL

学习资料:B站视频-黑马程序员JavaWeb基础教程 文章目录 JavaWeb整体介绍 MySQL1、数据库相关概念2、MySQL3、SQL概述4、DDL:数据库操作5、DDL:表操作6、DML7、DQL8、约束9、数据库设计10、多表查询11、事务 JavaWeb整体介绍 JavaWeb Web:全球广域网&…

PostgreSQL的逻辑架构

一、PostgreSql的逻辑架构: 一个server可以有多个database;一个database有多个schema,默认的schema是public;schema下才是对象,其中对象包含:表、视图、触发器、索引等;与user之间的关系&#x…

Mysql笔记-20240718

零、 help、\h、? 调出帮助 mysql> \hFor information about MySQL products and services, visit:http://www.mysql.com/ For developer information, including the MySQL Reference Manual, visit:http://dev.mysql.com/ To buy MySQL Enterprise support, training, …

免费恢复软件有哪些?电脑免费使用的 5 大数据恢复软件

您是否在发现需要的文件时不小心删除了回收站中的文件?您一定对误操作感到后悔。文件永远消失了吗?还有机会找回它们吗?当然有!您可以查看这篇文章,挑选 5 款功能强大的免费数据恢复软件,用于 Windows 和 M…

<数据集>混凝土缺陷检测数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:7353张 标注数量(xml文件个数):7353 标注数量(txt文件个数):7353 标注类别数:6 标注类别名称:[exposed reinforcement, rust stain, Crack, Spalling, Efflorescence…

又缩水Unity7月闪促限时4折活动模块化角色模板编辑器场景美术插件拖尾怪物3D模型UI载具AI对话TPS飞机RPG和FPS202407

Flash Deals are Coming Back! 限时抢购又回来了! July 17, 2024 8:00:00 PT to July 24, 2024 7:59:00 PT 太平洋时间 2024 年 7 月 17 日 8:00:00 至 2024 年 7 月 24 日 7:59:00(太平洋时间)…

云计算实训室的核心功能有哪些?

在当今数字化转型浪潮中,云计算技术作为推动行业变革的关键力量,其重要性不言而喻。唯众,作为教育实训解决方案的领先者,深刻洞察到市场对云计算技能人才的迫切需求,精心打造了云计算实训室。这一实训平台不仅集成了先…