那么,1 .在底部,只需将原来的MCU相关代码替换为存储器IC驱动器即可。 2 .添加中间层、视频播放的API函数。
这样,许多原始代码可以重用,大大节省了时间。
如果需求不变的话,只需更换功能IC,就会考虑成本,或者缺货,或者出现新的更好的IC。 此外,您只需更换与硬件驱动程序相关的IC文件即可。
三、举一个实际项目作为例子借鉴。
在某个项目中使用显示器显示网络数据。 以显示模块为例,分析三层体系结构的运用。 假设显示驱动为st7789,且MCU为FSMC方案st7789,定时器pwm控制背光。
这里对显示模块部分进行说明。
1 .硬盘层(底层)两个C文件和对应的头文件)单片机内部资源驱动文件mcu_bsp_drv.c,st7789驱动文件lcd_drv.c。
mcu_bsp_drv.c . 包含所有各功能模块所需的MCU资源初始化驱动程序代码,每个模块只使用一个函数,并以_mcu_init结尾。 这样的函数一般只使用一次,所以不要害怕又臭又长。 但是,需要详细的评论。 显示模块初始化函数的名称是lcd_mcu_init (;
lcd_drv.c,这实际上是st7789的驱动程序文件,为什么不命名为st7789.c呢? 因为如果更换驱动程序IC,也不需要更改中间层头文件的包含代码。 显示模块应提供初始化函数、点绘制函数、单色方形填充函数、数据填充函数、显示开/关函数、背光控制函数的接口。 命名方式为lcd_drv_xxx ()。 这些函数用lcd_drv.h声明,并向中间层明确提供API;
2 .模块功能层(中间层) lcd_api.c及相应的头文件
中间层实现显示相关函数:初始化函数、背光控制
制函数,各种几何图形(直线,圆,方框等)绘制函数,各种控件(窗口,按钮等)绘制函数,假如使用了第三方GUI系统,这些就不需要自己实现了。3.业务逻辑层(顶层):这一层与具体业务有关,也是程序员最花时间与精力的一部分。如果业务复杂,还可以细化分层。