# zmFramework **Repository Path**: luospring/zmFramework ## Basic Information - **Project Name**: zmFramework - **Description**: zmFrameWork框架专为MCU平台设计,其特点如下: 1. 采用面向对象的方式进行设计,可灵活选用组件; 2. 体积较小,可用于小资源的MCU平台; 3. 适合三层程序架构设计,其以中间件形式,上承业务逻辑,下接硬件驱动,使业务逻辑与目标平台解耦,更便于程序的移植; 4. 所有的组件都以对象指针的形式提供; - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-09-04 - **Last Updated**: 2025-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # zmFramework 三层嵌入式程序框架 一、 应用场景及优点 作为一名嵌入式软件开发者,可能经常遇到以下情景: 1. 产品的主控芯片由于某种原因需要更换,导致程序需要重新编写、调试; 2. 使用同一款芯片开发另一款产品; 以上两个问题的前提条件是已经拥有一款比较成熟稳定的产品,通过分析发现,第1个情景主要涉及到驱动程序的更换及调试,第2个情景主要涉及到业务逻辑的更换及调试。假如现有产品的程序没有明确的分层,可能这2种情景都会牵扯到全部程序的修改及调试,这不但会大大增加工作量,而且历经使用验证的旧产品程序的稳定性也不能得到有效传承。 zmFrameWork框架专为MCU平台设计,其特点如下: 1. 采用面向对象的方式进行设计,可灵活选用组件; 2. 提交较小,可用于小资源的MCU平台; 3. 适合三层程序架构设计,其以中间件形式,上承业务逻辑,下接硬件驱动,使业务逻辑与目标平台解耦,更便于程序的移植。例如针对上面提到的第1种情景,只需要修改硬件驱动层程序即可,调试的主要工作当然也在硬件驱动层。而针对上面提到的第2种情景,只需要修改业务逻辑层程序、增删相关的外设驱动即可。相较于不分层的程序,使用本框架的程序在移植时的改动范围明显变小,不但减少了工作量,旧程序的稳定性也能得到更好的传承。 4. 所有的组件都以对象指针的形式提供; 二、 框架介绍 以下路径以本文件为基准。 1. ./App_cfg.h——项目配置文件,这个文件中包含了对zmFrameWork框架中相关组件的引用; 2. ./App_cfg_IO.h——项目用到的通信端口配置文件,通信端口的编号应遵循zmFrameWork对通信端口的编号规则; 3. ./zmFrameWork/App_cfg.h——zmFrameWork的配置文件; 4. ./zmFrameWork/C_Extended.h——C语言扩展语法; 5. ./zmFrameWork/Sys——该文件夹包含常用的中间件及框架运行的核心组件,具体如下: zmSys——系统核心组件,提供时戳、延时、看门狗管理等功能; zmDateTime——日期时间组件; zmDebug——调试组件; zmElementInfo——元素信息组件,用以对内存中的数据进行说明,主要为调试组件服务; zmList——列表组件; zmQueue——队列组件,包括自动分帧队列及队列写入组件。其中自动分帧队列非常适合用于串口接收不定长数据帧的情况; zmThead——基于ProtoThead开发的任务调度组件; Sys.h——对外接口头文件; Sys_cfg.h——对内配置头文件; Sys_cfg_Stoage.h——存储配置头文件; Sys_DataType.h——本文件夹下组件用到的数据类型; 6. ./zmFrameWork/PAL——该文件夹包含常用的外设抽象组件,具体如下: zmCOM——串行通信类端口抽象组件,包括异步串口zmSerialPort、网络接口zmNet、同步串口zmSPI等,他们都继承同一组接口,用于对外呈现相同的操作,所有的串行类接口都进行了统一编号; zmGPIO——GPIO管理组件,其对MCU的所有GPIO进行统一编号,编号范围默认为0~254; zmPWM——PWM管理组件,其对MCU的所有PWM通道进行统一编号,编号范围默认为0~254; zmStorage——存储管理组件,其对MCU内部及外部的所有闪存进行统一编址,并向驱动层提供统一的对象模型以达到统一读写的目的; PAL.h——对外接口头文件; PAL_Config.h——对内配置头文件; PAL_DataType.h——本文件夹下组件用到的数据类型; 7. ./zmFrameWork/HAL_Interface——该文件夹包含本框架需要的硬件接口,需要根据相应的硬件平台实现。 二、 移植方法 1. 将同级文件夹下的zmFrameWork复制到项目中,并在工程配置中增加对该文件夹的引用; 2. 将同级文件夹下的App_cfg.h文件和App_cfg_IO.h文件复制到项目中,若项目中已经存在同名文件,可将内容合并; 3. 各类组件的使用方式可参考Demo;