打印
[经验分享]

嵌入式编程-状态机编程思想

[复制链接]
1205|41
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主


利用状态机编程思想,来写呼吸灯算法,直接在实践中学习状态机编程思想,或者称为更高大上点的软件算法设计思想,
例子:做一个呼吸灯,计数值幅值300,初始i=0,state=0,i++,占空比逐渐增大,灯逐渐变亮,i=300,占空比100%,达到最亮,然后state=1,i-- 灯慢慢变暗,这样慢慢亮再慢慢暗就像呼吸状态了


————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/m0_57249200/article/details/128348881

使用特权

评论回复
沙发
weifeng90| | 2025-3-7 23:12 | 只看该作者
有专门做状态机软件开发的

使用特权

评论回复
板凳
elsaflower| | 2025-3-10 16:07 | 只看该作者
状态机编程思想在单片机嵌入式编程中是一种非常常见且有效的编程方法。它通过将系统的行为分解为一系列离散的状态,定义状态之间的转换条件和操作,从而简化复杂系统的控制逻辑。

使用特权

评论回复
地板
olivem55arlowe| | 2025-3-10 16:21 | 只看该作者
在主程序循环中持续检查是否有新的事件发生,并调用相应的状态处理函数。

使用特权

评论回复
5
kmzuaz| | 2025-3-11 14:21 | 只看该作者
状态机的结构清晰,易于理解和维护。

使用特权

评论回复
6
averyleigh| | 2025-3-11 15:29 | 只看该作者
状态机是一种常用的编程思想,特别是在嵌入式系统和单片机编程中。它通过定义一系列的状态以及在这些状态之间的转移来模拟系统的不同行为。状态机的核心在于它的有限性和确定性,即系统在任何时刻都处于一个已知的状态,并且可以根据输入事件转移到下一个状态。

使用特权

评论回复
7
febgxu| | 2025-3-11 16:54 | 只看该作者
:由于状态机的状态和转移都是预先定义好的,只要输入的条件符合预期,系统就会按照预定的状态转移逻辑运行,减少了程序出现错误的可能性。即使在遇到异常情况时,也能够通过合理的状态设计进行处理和恢复。

使用特权

评论回复
8
pl202| | 2025-3-12 15:35 | 只看该作者
在嵌入式系统中,用户界面往往具有多种状态(如空闲、输入、处理等),状态机可以方便地描述这些状态以及状态之间的转换关系。

使用特权

评论回复
9
belindagraham| | 2025-3-12 18:17 | 只看该作者
在单片机嵌入式编程中,状态机可以将一个复杂的程序分解为多个相对简单的状态,每个状态对应特定的功能和行为,通过状态之间的转换来实现整个系统的功能。

使用特权

评论回复
10
10299823| | 2025-3-14 10:16 | 只看该作者
建议在项目中优先采用状态机思想,逐步培养模块化设计思维。

使用特权

评论回复
11
pl202| | 2025-3-14 13:01 | 只看该作者
使用二维数组来存储状态转移表,通过查表的方式实现状态的转换。这种方法适用于状态较多、状态转移逻辑复杂的状态机,代码的可读性和可维护性较好。

使用特权

评论回复
12
plsbackup| | 2025-3-14 16:25 | 只看该作者
状态机将系统的行为分解成不同的状态和转换条件,使得代码结构更加清晰,易于理解和维护。

使用特权

评论回复
13
ulystronglll| | 2025-3-14 17:27 | 只看该作者
状态机可以用于描述通信协议的各种状态(如建立连接、数据传输、断开连接等)以及状态之间的转换关系。

使用特权

评论回复
14
claretttt| | 2025-3-15 11:07 | 只看该作者
当需要增加新的状态或修改状态转移逻辑时,只需要在状态机中进行相应的修改,对其他部分的代码影响较小。

使用特权

评论回复
15
albertaabbot| | 2025-3-15 11:59 | 只看该作者
通过枚举类型来定义所有可能的状态,可以使代码更加直观易读。

使用特权

评论回复
16
phoenixwhite| | 2025-3-15 12:31 | 只看该作者
通过一系列的条件判断语句来实现状态的转换和动作的执行。这种方法简单直观,适用于状态较少、逻辑简单的状态机。

使用特权

评论回复
17
primojones| | 2025-3-15 14:19 | 只看该作者
对于实时性要求较高的应用,注意状态转换逻辑不应引入过多延迟。

使用特权

评论回复
18
jackcat| | 2025-3-15 14:55 | 只看该作者
将复杂的程序分解为多个简单的状态,每个状态的功能和行为明确,使代码的结构更加清晰,易于理解和维护。

使用特权

评论回复
19
mollylawrence| | 2025-3-15 16:51 | 只看该作者
在单片机嵌入式编程中,状态机可以帮助开发者清晰地组织代码逻辑,提高代码的可读性和可维护性。例如,在按键处理中,一个按键的动作可以被视为一个状态机,它包含了释放、抖动、按下、抖动和重新释放等状态。每个状态都有对应的事件和行为,比如在“按下”状态,如果检测到按键被按下,系统可能会执行某个操作,然后转移到“抖动”状态以等待按键稳定。

使用特权

评论回复
20
louliana| | 2025-3-15 17:40 | 只看该作者
通过将系统分解为多个状态和状态转换,简化了复杂系统的控制逻辑。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

90

帖子

0

粉丝