参加工作3年以来辗转于不同MCU编写的过程中,每使用一款新的MCU总要重新开发,但是不同MCU的差异性导致程序编写进度缓慢,程序混乱难以维护。因此我意识到程序框架的重要性,它能帮助你将程序从不同硬件环境中抽离出来,独立运行,从而使得程序一致性强易于维护和移植。在此我发表一下自己的薄见,如有设计不合理之处,请各位大佬指出。
首先应先依据功能划分将不同功能封装到不同的C文件中,形成对应的外围驱动文件,该驱动文件负责与硬件层进行沟通,其中和硬件挂钩的程序尽可能统一封装到初始化和销毁2个函数中,其他需要贯穿整个驱动文件的程序应写成宏的方式(例如GPIO电平控制) ,使其方便在不同平台移植。
外围驱动文件只能调用硬件资源,例如中断、定时器。其中,不同的驱动文件之间禁止调用!当需要与其他的外围驱动文件进行信息交换时,应该向消息平台发送请求,由消息平台统一进行调度。
消息平台实际上是一个消息队列,所有的消息按照时间顺序依次进入,由主循环进行消息处理。为保证系统的实时性,消息应尽可能保证在短时间内完成,对于一些耗时长的消息可采用切片处理的方式,时间一到就将未处理完的消息重新压入队列,并开始处理下一个消息。消息平台的优先级应低于所有中断的优先级。对于中断来说,中断只负责接收数据并将数据通过指针的方式发送给消息平台,由消息平台统一处理。