【问题标题】:Code Design - state machine or procedural code代码设计 - 状态机或程序代码
【发布时间】:2015-05-16 14:14:49
【问题描述】:

当涉及到代码设计时,我不确定如何进行项目。

考虑一个设备,它必须使用模数转换器监控电压值,如果测量值超出特定限制,有时还必须调节其 pwm 输出。该设备还有一个接口,例如LED 和按钮以及电位器。

如果用户更改电位器值,设备在等待用户输入时仍需监控电压。另一个问题是设备必须快速行动(在 10 毫秒内关闭驱动器以供电源)。您会推荐状态机还是过程编程?

用 C 语言构建状态机有多难?当控制器(STM32F0)必须读取 4 个 ADC 输入并生成 2 个 PWM 时,它是否足够快?

【问题讨论】:

  • 如果您正在考虑状态机设计,请考虑QP Active Object Framework。在我看来,它有一个学习曲线,但非常值得。

标签: c state microcontroller procedural


【解决方案1】:

状态机最适合不需要扩展的小型应用程序。如果这是进入一个服务于一个目的的设备,状态机就可以了。当涉及到功能蔓延时,状态机很快就会变得一团糟。

您正在使用的处理器有足够的马力来处理这项任务。最有效的可能是定时器和中断驱动设计。从定时器中断读取 ADC。您应该能够轻松读取 1000Hz 或更快的 ADC。

并使用定点或整数而不是浮点数。

【讨论】:

  • 我不同意状态机必然难以扩展的观点。状态机是一种将复杂性分解为更多模块化块的方法。使用正确的状态机框架,扩展应该变得更容易 - 而不是更难。
猜你喜欢
  • 2012-10-16
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 2015-04-18
  • 2023-02-21
  • 2010-09-28
相关资源
最近更新 更多