打印

也谈单片机程序框架

[复制链接]
2637|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
s17701332|  楼主 | 2018-1-3 17:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家都知道程序模块化设计的重要性,而另一个面向过程编程的重要思想就是分层设计,分层设计可以更好的划分模块,实现高内聚低耦合,并提炼成自己的程序库。在参考了网上一些思想以后,对单片机裸编程的程序框架形成了一个初步的分层思路,在这里向大家分享,也起个抛砖引玉的效果。
整个程序分为4层
1.MCU层:所用单片机的各个功能驱动,一般厂商会提供,部分单片机需要自己写。
2.HAL层:硬件抽象层,为板上所有外设的驱动。
3.FML层:功能模块层,系统内各个功能的实现所需函数(注:该层只是方法,而不是实现),又分为3个模块
      操作模块:为实现各种功能所需的外设操作以及单片机的操作,
      数据模块:
     (1) 数据来源层:实现系统内各种数据的采集,主要调用MCU层和HAL层实现;
     (2)数据预处理层:这层可根据需求决定是否需要,与硬件无关,对采集到的数据进行预处理,如对ADC采集到的波形进行滤波;
     (3)数据处理层:这层是对数据进行最终处理的相关函数所在。
      通讯模块:负责与其他设备通讯
4.App层:应用层,负责实现各种实际功能,只调用FML层的函数。
经过实践以后,发现程序框架确实比以前清晰,但是发现一个问题,UI放在App层会调用大部分其他功能,正在考虑是不是UI也单独作为一层。


相关帖子

沙发
mlmbcsz| | 2018-1-19 11:28 | 只看该作者
能不能给一个模板我们一起讨论一下呢?

使用特权

评论回复
板凳
wdliming| | 2018-7-25 20:09 | 只看该作者
不错不错

使用特权

评论回复
地板
ateganyl| | 2018-9-26 11:53 | 只看该作者
你这mcu层和HAL层功能是一样的吧

使用特权

评论回复
5
陈其旦| | 2019-3-8 10:20 | 只看该作者
求个模范模块

使用特权

评论回复
6
小鱼丸| | 2019-5-26 20:31 | 只看该作者

使用特权

评论回复
7
肥羊| | 2019-5-29 10:59 | 只看该作者
内存不够,也没有用的

使用特权

评论回复
8
sufwmsh| | 2019-8-20 14:41 | 只看该作者
给个范例好吗

使用特权

评论回复
9
lzyyoumuren| | 2019-8-28 14:28 | 只看该作者

使用特权

评论回复
10
zxm19820916| | 2019-8-29 14:36 | 只看该作者
同求范例。楼主可以抛个大概的框架出来也行啊。

使用特权

评论回复
11
圆圈| | 2019-11-11 15:56 | 只看该作者
可以,linux下就是这样框架
UI/命令行
APP应用层
....
其中UI和命令行是对等的,
UI是给最终用户使用,主要是提高用户体验;
命令行则为研发内部使用,一般用于集成测试/自动化测试/系统测试/故障诊断/状态查询 等等;

使用特权

评论回复
12
lzyyoumuren| | 2019-12-21 16:16 | 只看该作者
楼主可以再详细点,赞

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

31

帖子

1

粉丝