# embedded_frame **Repository Path**: Sevenfite/embedded_frame ## Basic Information - **Project Name**: embedded_frame - **Description**: 一种嵌入式单片机的通用开发框架 - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-06-24 - **Last Updated**: 2026-09-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 本库展示了一种嵌入式单片机的通用开发框架 分为app bsp sys 三个层级 sys层中,有一些通用的算法库,数据结构库等。 bsp层中,是板级设备的抽象。 app层中,是与实际业务相关的内容。 这个框架,具有分责任开发,模块复用,抽象分离的作用。 分责任开发:三个层级,可以分成2批人来开发,sys基本是复用的,只是一些通用实现,都不用专门的人去维护。 在一个产品开发的初期,功能初步确定后,app层就可以开始开发了,不需要使用具体的硬件型号,比如只需要知道 要有一个进水温度的传感器,有一个进水的电机,不需要知道具体的型号就可以开发了。然后选型完成后, bsp层就可以进行开发,把板级上的设备都做好使用方法。这之间,责任分明,应用层的人,根本不需要懂板子上的传感器的使用方法,只要调用接口函数就可以了,两个团队,只需要几个人去交接少部分内容就行了,不需要大范围的干涉,开发效率高。 抽象分离:开发的过程中,难免需要更换设备型号,比如要更换芯片,那么app根本不需要修改,只需要bsp层的开发人员,更改bsp层,对上还是提供一样的接口,比如iic操作的接口。比如板子要升级,要多一些外围器件,引脚要修改,那么app层的人员也不用管。 模块复用,比如同一个应用程序,要分出不同的板型,v1版,v2版,pro版,lite版,这些板子用料不同,引脚不同,但是大体功能还是可以复用的 bsp与app之间的通讯是通过句柄来的,句柄是一个指针,通过在调用bsp中的应用函数时,传入句柄表征板子上的器件。比如要开1号灯,就是dev_led_on(g_led1); 更为上的,这个思想是可以递归使用的,在app层,又可以分为两批人员,一批负责应用方面的开发,对接客户甲方,一批对接底下的bsp层的开发人员。我们使用文件夹来区分团队的范围,那么在这里,./app下就有./app/application 和./app/service。 在温度传感器要改换高精度型号时,只需要修改./app/service中的sensor/temperture中的实现就好了。 service层和application层之间,也可以通过句柄来通讯,比如使用进水温度的传感器句柄 g_temperture_inWater,application的开发人员,不需要知道真正的底层型号,只需要使用这个句柄就好了,句柄相关的操作,由service层的开发人员实现 模块复用,通过这些操作,天生复用,bsp中的各个驱动,app中的协议解析等,都可以复用