c语言状态机_单片机C语言 - 基于条件选择的状态机编程技巧

单片机C语言 - 基于条件选择的状态机编程技巧

一、有限状态机

有限状态机是一种概念思想,把复杂的控制逻辑分解成有限个稳定状态,组成闭环系统,通过事件触发,让状态机按设定的顺序处理事务。

单片机C语言的状态机编程,是利用条件选择语句(switch -- case)切换状态,通过函数内部指令改变状态机状态,让程序按设定的顺序执行。

二、应用说明

1、要想使用状态机进行编程,需要将任务分解成有限个稳定状态。

2、举例说明

437f116cf0c2555a83778caae68b05d7.png

上图为按钮按键典型的动作图,可以提取为四个状态,分别为状态1 = 按键谈起状态、状态2 = 按键不稳定状态1、状态3 = 按键按下状态、状态4 = 按键不稳定状态2。

有限状态机实现如下:

b9bd77916144007d3e77f5f85aca347f.png

三、编程实例

以LoRa推送为例进行说明。

1、定义有限状态机:

0080f123de1a3922bf2e870493f0735c.png

共5个状态,请求数据、推送、验证、待机、唤醒。

2、主函数:

3ad6769502ddd657125878b2c6d377c9.png

执行有限状态机。

3、执行函数

5f798997859c88f305929e666014d2b8.png

在执行函数中切换状态机的状态。

四、小结

单片机C语言的状态机编程,是利用条件选择语句(switch case)切换状态,通过函数内部指令触发状态切换,让程序按设定的顺序执行。

状态机编程涉及的知识点很多,本文只是简要的介绍了下,仅仅起到抛砖引玉的作用,日后设计过程中,需要不断的总结经验,沟通交流,以达到真正的理解,灵活运用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值