C语言状态机编程思路

有限状态机的概念有限状态机是一个概念性概念,它将复杂的控制逻辑分解为有限数量的稳定状态,以形成一个闭环系统。由事件触发,状态机按设置的顺序处理事务。
单片机C语言的状态机编程使用条件选择语句(switch,case或if,else)来切换状态,并通过更改状态机的状态,以设置的顺序执行程序。有限状态机由有限状态和彼此之间的过渡组成,并且在任何时候都只能处于给定数量的状态之一。
当接收到输入事件时,状态机将产生输出,还可能伴随状态转换。状态机的原理如下:在当前状态下,事件发生后,它将移至下一个状态,然后确定要执行的功能动作。
请参考以下示意图:应用示例要使用状态机思想进行编程,需要将任务分解为有限数量的稳定状态。这是一个常见的按钮动作示例:上图是一个典型的按钮动作图,可以分为四个状态:状态1 =向上按钮,状态2 =前沿抖动,状态3 =按下按钮,状态4 =后缘抖动。
有限状态机的C代码实现如下:if(timer> = 10ms)/// 10ms是典型的防抖时间{switch(button state){case button pop-up state:if(IO read as低电平)按钮状态=边界抖动;休息;情况边界抖动状态:如果(IO读为低电平)按钮状态=按下按钮;休息; case按钮按下状态:如果(IO读为高电平)按钮状态=边缘抖动后;休息; case后沿抖动状态:如果(IO读为高电平),则按钮状态=按钮向上;休息;默认值:按钮状态=按钮向上;状态机编程建议巧妙地使用结构一方面,枚举可以促进状态机的状态和事件的扩展和维护,另一方面,它可以提高程序的可读性。假设有3个状态(状态数量可以随意增加),则状态的枚举如下:typedef enum {state_1 = 1,state_2,state_3} State;假设有5个事件(也可以随意添加),则事件的枚举如下:typedef枚举{Event_1 = 1,event_2,event_3,event_4,event_5} Event;定义一个描述如下的结构:typedef struct {State curState;}当前状态Event eventId;}}}}}}}}}}}} / / Events STATE NEXT STATE; / Action函数} StateEvent;根据具体应用场景调整状态和事件,并分配相应的动作功能。
总体基本流程如下:当前状态->初始状态。事件已触发->跳至下一个状态->具体动作功能的总结状态机被广泛使用,逻辑思维也可以被运用。
LoRa消息推送还经常采用状态机的思想。实际上,状态机涉及很多知识点。
本文仅简要介绍单片机C语言的状态机编程思想。 ,在未来的开发和设计中,有必要不断总结经验并灵活运用。
来源:左侧为Headline-Embedded,右侧为C语言链接:https://www.toutiao.com/i6843028812112855855/版权属于原始作者。如果有任何侵权,请联系以将其删除。
免责声明:本文内容经21ic授权后发布,版权归原作者所有。该平台仅提供信息存储服务。
本文仅代表作者的个人观点,并不代表该平台的立场。如有任何疑问,请与我们联系,谢谢!

公司: 深圳市捷比信实业有限公司

电话: 0755-29796190

邮箱: tao@jepsun.com

产品经理: 陆经理

QQ: 2065372476

地址: 深圳市宝安区翻身路富源大厦1栋7楼

微信二维码

更多资讯

获取最新公司新闻和行业资料。

  • 电阻值为0说明电路处于短路状态 当电阻值测量结果为0时,这通常意味着在所测试的两点之间存在低阻抗路径,即电路处于短路状态。在正常情况下,电阻值为0表明这两点之间的连接几乎不存在任何阻碍电流通过的因素。这种情况可能发生在导线直接接触、电源...
  • 为什么在零状态条件下,电容在t=0+时可视为短路? 在电路分析中,特别是在讨论暂态响应时,我们会遇到零状态条件下的电容。所谓零状态,是指初始时刻电容两端的电压为零。当考虑电路在施加输入信号的瞬间(即t=0+时),电容由于其存储电荷的能力,在这一时刻可以被视为...
  • 工作在截止状态的条件和特性      在截止状态下工作的条件是VBB“=0。如果采用中虚线的近似特性,则当VI“=VON时,三极管已被截止。截止状态下三极管的特性为iB=0/ic=0。因为没有ic流过rc,所以rc上没有压降,所以VO=VOH=VCC。  &nbs...
  • 可编程晶体振荡器与低Rds(on) MOS管在高精度时钟电路中的协同应用 可编程晶体振荡器与低Rds(on) MOS管的集成优势在现代电子系统设计中,高精度时钟信号和高效电源管理是保障系统稳定运行的关键。可编程晶体振荡器(XO)与低Rds(on) MOS管的结合,正成为高性能嵌入式系统、工业控制及物联网设...
  • 如何选择合适的可编程晶体振荡器与0.5A低Rds(on) MOS管进行电路设计 关键参数对比与选型指南在设计高可靠性电子系统时,正确选择可编程晶体振荡器(XO)与0.5A低Rds(on) MOS管至关重要。以下从性能指标、应用场景和设计注意事项三方面展开分析。1. 可编程晶体振荡器选型要点频率范围与稳定性:...
  • 三极管的三种状态 三极管的三种状态也叫三个工作区域,即:截止区、放大区和饱和区。  主要是根据两个pn结的偏置条件来决定:  发射结正偏,集电结反偏——放大状态;  发射结正偏,集电结也正偏——饱和状态;  发射结反偏,集...
  • 可编程晶振的工作原理和应用领域 可编程晶振是一种电子元件,其核心功能是生成精确的时钟信号,用于同步数字电路中的各种操作。与传统晶振相比,可编程晶振的最大特点在于其频率可以通过软件进行调整,这使得它在需要频繁改变系统工作频率的应用中表...
  • ALPS编码器在现代工程应用中的优势与特点 ALPS编码器作为一种高精度、高性能的旋转编码器,在现代工程领域中扮演着重要的角色。其优势和特点主要体现在以下几个方面:1. 高精度与可靠性:ALPS编码器以其卓越的精度和可靠性著称,能够在各种恶劣的工作环境下保持稳...
  • ALPS编码器在现代工程应用中的重要性与优势 ALPS编码器作为一种高性能的旋转编码器,在现代工程领域中扮演着极其重要的角色。它以其卓越的精度、稳定性和可靠性而著称,广泛应用于各种自动化设备和精密控制系统中。ALPS编码器能够提供精确的角度位置反馈,这对于需...
  • 可编程晶体振荡器(XO)的工作原理和应用领域 可编程晶体振荡器(XO)是一种时钟发生器,它通过将晶体与外部电路结合,产生精确的输出频率。这种设备的核心是石英晶体,它具有压电效应,即在晶体上施加机械应力时会产生电压,反之亦然。当晶体受到交流电激励时,...
  • 元利富气缸行程开关AL-10R, CS1-J, C系列:可靠性能与广泛应用 元利富生产的气缸行程开关AL-10R, CS1-J, C系列是工业自动化领域中的重要组成部分。这些型号的行程开关广泛应用于各种机械和设备中,用于检测气缸的位置变化,从而实现自动化控制的目的。AL-10R型行程开关以其紧凑的设计和可...
  • 可编程晶振技术解析:I²C接口如何实现精准频率调节 可编程晶振的核心优势与应用前景随着电子设备对时钟精度和灵活性要求的不断提升,可编程晶振(Programmable Crystal Oscillator, PCXO)正逐渐成为现代嵌入式系统中的关键元件。尤其在支持I²C通信协议的可编程晶振中,用户可通过软...
  • 固定偏压产生器的设计思路与性能优化 固定偏压产生器的设计思路与性能优化固定偏压产生器(Fixed Bias Generator)是一种为特定电子设备提供恒定偏置电压的电源模块,常见于运算放大器、模拟开关、晶体管放大电路等需要稳定工作点的场景。其设计目标在于提供高精...
  • 深入理解I²C可编程晶振:从原理到实际部署指南 I²C可编程晶振的实际部署与优化策略尽管可编程晶振在理论上提供了极高的灵活性,但在实际工程应用中仍需注意诸多细节。本文将从硬件连接、软件配置、抗干扰设计等方面,提供一套完整的部署指南。1. 硬件连接要点正确连...
  • 浪涌保护器的专业术语 1.空气终端系统 用于直接接受或承受雷电的金属物体和金属结构,如避雷针、避雷带(线)、避雷网等。 2.引下线系统 连接空气终端和接地装置的金属...
  • 聚鼎ASMBJ瞬态抑制二极管:高效应对汽车电子瞬态过压挑战 聚鼎ASMBJ瞬态抑制二极管:高效应对汽车电子瞬态过压挑战随着新能源汽车与智能驾驶技术的快速发展,车载电子系统的敏感性显著提升,对瞬态过压保护提出了更高要求。聚鼎科技全新推出的ASMBJ系列瞬态抑制二极管(TVS),以...
  • 二极管的动态电阻与静态电流的关系 1.5KE6.8A 1.5KE6.8CA 5.80 6.45 7.14 10 10.5 144.8 10001.5KE7.5A 1.5KE7.5CA 6.40 7.13 7.88 10 11.3 134.5 5001.5KE8.2A 1.5KE8.2CA 7.02 7.79 8.61 10 12.1 125.6 2001.5KE9.1A 1.5KE9.1CA 7.78 8.65 9.55 1 13.4 113.4 501.5KE10A 1.5KE10CA 8.55 9.50 10.5 1 14.5 104.8 101.5KE11A 1.5KE11CA 9.40 10.5 11.6 1 15.6...
  • 无感电阻是什么意思? 什么是无感电阻:无感便是无感值的意思,但是一般的无,是指电阻上的感抗值非常小了,能够忽略不计,通常不能说是彻底没有。一些精细的仪器仪表设备,电子工业设备常常需求用到此类无感电阻,由于通常具有高感抗的电...
  • 电阻温漂ppm是什么意思 1、温度系数:ppm/℃,即单位温度引起的电阻值变化。2.ppm(partpermillion)指百万分之一。例如,对于标称电阻为1K的电阻,温度系数为100ppm/℃,这意味着温度变化1摄氏度,电阻变化1k0.1Ω,变化100℃,电阻变化1k10Ω。精度非常高。...
  • 电阻温漂ppm是什么意思 ppm是电阻的温度系数,是由一度温度变化引起的电阻变化的百万分之一。例如,如果ppm=50,则是由温度变化引起的,该电阻的电阻变化为百万分之五十...