代码设计——状态机或程序代码
Code Design - state machine or procedural code
在代码设计方面,我不确定如何进行项目。
想一想必须使用 analog/digital 转换器监控电压值的设备,如果测量值超出一定限度,有时必须调节其 pwm 输出。该设备还有一个接口,例如LED 和按钮以及电位计。
如果用户改变了电位器的值,设备在等待用户输入时仍然需要监测电压。另一个问题是该设备必须快速行动(在 10 毫秒内关闭电源驱动器)。您会推荐状态机还是过程编程?
用 C 构建状态机有多难?当控制器 (STM32F0) 必须读取 4 个 ADC 输入并生成 2 个 PWM 时,它是否足够快?
状态机最适合不需要扩展的小型应用程序。如果这是进入一个服务于一个目的的设备,状态机就可以了。当谈到功能蠕变时,状态机很快就会变得一团糟。
您使用的处理器有足够的能力来处理这个任务。最有效的可能是定时器和中断驱动设计。从定时器中断中读取 ADC。您应该能够轻松读取 1000Hz 或更快的 ADC。
并使用定点数或整数而不是浮点数。
在代码设计方面,我不确定如何进行项目。
想一想必须使用 analog/digital 转换器监控电压值的设备,如果测量值超出一定限度,有时必须调节其 pwm 输出。该设备还有一个接口,例如LED 和按钮以及电位计。
如果用户改变了电位器的值,设备在等待用户输入时仍然需要监测电压。另一个问题是该设备必须快速行动(在 10 毫秒内关闭电源驱动器)。您会推荐状态机还是过程编程?
用 C 构建状态机有多难?当控制器 (STM32F0) 必须读取 4 个 ADC 输入并生成 2 个 PWM 时,它是否足够快?
状态机最适合不需要扩展的小型应用程序。如果这是进入一个服务于一个目的的设备,状态机就可以了。当谈到功能蠕变时,状态机很快就会变得一团糟。
您使用的处理器有足够的能力来处理这个任务。最有效的可能是定时器和中断驱动设计。从定时器中断中读取 ADC。您应该能够轻松读取 1000Hz 或更快的 ADC。
并使用定点数或整数而不是浮点数。