之前写过单片机状态机的框架编写,软件定时器的编写等,这些都是在中大型裸机框架中经常用到的,否写就无法很难写好软件。
本文则再次整理一些裸机框架的一点思路。
毫无疑问,裸机里面,状态机、软件定时器都是要用到的,但是在整个工程里面,需要合理设计框架,合理利用状态机和软件定时器,至关重要了。
裸机就是大循环+各种中断。
中断里面,就是快进快出,这个是普遍使用的原则;除非大循环啥事不干,则可以在中断里面处理事情,但这种情况相对来说,还是少数。
大循环等于单线程。因此,通常情况下,任务都在大循环里面处理的,任务里面细分很多小任务,小任务的处理速度就比较重要了。
比如,任务中有5个任务,每个人任务里面处理不同的事务,如果其中一个任务的处理时间较长,则会拖累其他的4个任务,哪怕其他4个任务,都是处理非常快,但是由于第5个任务处理很慢,导致系统性能就降低了很多。
因此,我们需要将处理慢的这个任务进行优化。
优化的方式可能有:
1、如果任务里面有for循环,比如读取很多通道的传感器采集的信息,那么可以一次只读一个,尽管读完所有的信息时间变慢了,但是整体性能提升了,不会阻塞后续的任务执行,而且通常传感器读取的信息需求不是特别快,能满足要求就行,1s内读取所有的信息未尝不可。
2、如果一个任务需要很长的时间才能执行一个完整的周期,那么干脆就使用状态。如果485主从机通信,这种情况下通常就是状态机来执行。