一、有限状态机 有限状态机是一种概念思想,把复杂的控制逻辑分解成有限个稳定状态,组成闭环系统,通过事件触发,让状态机按设定的顺序处理事务。 单片机C语言的状态机编程,是利用条件选择语句(switch -- case)切换状态,通过函数内部指令改变状态机状态,让程序按设定的顺序执行。 二、应用说明 1、要想使用状态机进行编程,需要将任务分解成有限个稳定状态。 2、举例说明 ![](https://pic1.zhimg.com/80/v2-dc7b2a82e4ea2522e0118c583563556c_720w.webp) 上图为按钮按键典型的动作图,可以提取为四个状态,分别为状态1 = 按键谈起状态、状态2 = 按键不稳定状态1、状态3 = 按键按下状态、状态4 = 按键不稳定状态2。 有限状态机实现如下: ![](https://pic4.zhimg.com/80/v2-b22f658dd82868256ed3a16c982fdadb_720w.webp)
三、编程实例 以LoRa推送为例进行说明。 1、定义有限状态机: ![](https://pic3.zhimg.com/80/v2-136638c647061f3333d7514a22bccd8a_720w.webp) 共5个状态,请求数据、推送、验证、待机、唤醒。 2、主函数: ![](https://pic4.zhimg.com/80/v2-7f0407af547a3449de8adf8dc01d7d47_720w.webp) 执行有限状态机。 3、执行函数 ![](https://pic1.zhimg.com/80/v2-e615c3865c838e7f2b02c54d94295254_720w.webp) 在执行函数中切换状态机的状态。
四、小结 单片机C语言的状态机编程,是利用条件选择语句(switch case)切换状态,通过函数内部指令触发状态切换,让程序按设定的顺序执行。 状态机编程涉及的知识点很多,本文只是简要的介绍了下,仅仅起到抛砖引玉的作用,日后设计过程中,需要不断的总结经验,沟通交流,以达到真正的理解,灵活运用。
|