打印
[软件资料]

单片机项目有必要分层设计吗?

[复制链接]
886|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2023-9-13 16:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
有网友问:单片机小项目,有必要做分层设计吗?
这个问题,主要看项目本身,以及公司管理。小项目,是有多小?公司对项目的管理是否看重?
正规一点的公司,从长远的角度来说,很有必要做好软件分层设计。下面就简单说两点编程分层的思想。

分层思想
嵌入式分层思想,可能初学者不太懂,但你肯定见到过很多类似下面这样的软件结构图。
比如,RT-Thread Nano内核结构:
STM32Cube软件结构:

这种软件结构图,里面的东西可能有点多,可能你也看不懂。
但是,只要你仔细一看每个区域的划分,你就会发现,它们是把软件划分了多个区域,这里其实就是一种分层的思想。
举一个例子:一个遥控器控制一个小车运动,包含遥控器的按键(比如:前后左右),无线通信(比如:433),小车无线接收,电机驱动、电机控制算法等。
遇到这种嵌入式软件开发,你会怎么编程?
1.底驱动小车部分:电机驱动(比如IO时钟、PWM配置)封装成一个函数、433驱动封装成一个函数。然后把这两个函数整理在一个Driver(驱动)函数。
遥控部分同理:按键驱动(比如IO时钟、配置)封装成一个函数、433驱动封装成一个函数。
2.中间层这里比如你电机用到了加减速、左右转向的一些算法,封装成对应Middleware中间层模块函数(待应用层调用)。

3.应用层应用层就考验你业务逻辑的一层,也是整合软件资源的一层。如果你代码层次画分的话,业务逻辑代码就很容易。

反之,你代码很乱,要实现一个业务逻辑,可能连续加班多天,最后写出来的代码也是bug无数。


使用特权

评论回复
沙发
jcky001|  楼主 | 2023-9-13 16:21 | 只看该作者
模块化

嵌入式编程,模块化相当重要,可以说,它会影响你代码质量、加班多少、甚至升职加薪。

还是上面那个例子:
一个遥控器控制一个小车运动,包含遥控器的按键(比如:前后左右),无线通信(比如:433),小车无线接收,电机驱动、电机控制算法等。

如果你把所有代码都写在main函数,你说能实现吗?当然,肯定也能实现。

但是,你这样写,你的业务逻辑代码是不是很废脑、很费时间?

还有,你后续加修改按键方式、添加功能,你该怎么办?

所以,你需要模块化编程,把一些小模块分别封装成函数,提供给对应的应用层调用。

上面其实也说了:电机驱动(比如IO时钟、PWM配置)封装成一个函数,这其实就是一个小模块。

当然,这里的驱动函数只是一个小模块,然后还需要进一步封装成“大模块”。

比如:我这里还引入一个编码器,闭环检测电机速度,通过底层电机驱动、加减速算法,编码器等整合成一个电机运动的函数(模块):MOTOR_Ctrl(速度,方向)。这就是一个大模块(当然,还可以结合需求再进一步封装)。

最后,还有很多重要的编程思想,需要开发者了解并掌握,在一定程度上,你的编程思想决定了你是新手级别,还是大神级别。

使用特权

评论回复
板凳
weifeng90| | 2023-9-14 07:40 | 只看该作者
这个和公司大小无关,分层设计,前期搭框架可能需要多花点时间,但是弄好了,后期开发和维护就很方便了。

使用特权

评论回复
地板
中国龙芯CDX| | 2023-9-18 13:15 | 只看该作者
这个必须有必要,越资深的层次感越明确

使用特权

评论回复
5
AdaMaYun| | 2023-9-21 19:08 | 只看该作者
这个非常有必要的,层次说明软件设计具有可移植性

使用特权

评论回复
6
小小蚂蚁举千斤| | 2023-9-22 13:29 | 只看该作者
模块化嵌入式编程,模块化相当重要,可以说,它会影响你代码质量、加班多少、甚至升职加薪。

使用特权

评论回复
7
LOVEEVER| | 2023-12-16 15:54 | 只看该作者
其实是有必要的毕竟模块化编程大大降低移植风险,可读性高

使用特权

评论回复
8
jf101| | 2023-12-19 09:40 | 只看该作者
这个是必须的模块设计体现工程师的功底

使用特权

评论回复
9
OKAKAKO| | 2023-12-19 10:21 | 只看该作者
分层设计,前期搭框架可能需要多花点时间,但是弄好了,后期开发和维护就很方便了。

使用特权

评论回复
10
小小蚂蚁举千斤| | 2023-12-19 10:45 | 只看该作者
分层设计逻辑感更强,功能更集中,方便移植问题排查

使用特权

评论回复
11
forgot| | 2023-12-21 08:55 | 只看该作者
模块化嵌入式编程,模块化相当重要,期开发和维护就很方便了

使用特权

评论回复
12
中国龙芯CDX| | 2023-12-21 08:59 | 只看该作者
实话实说这个分层设计太有必要了

使用特权

评论回复
13
中国龙芯CDX| | 2023-12-21 08:59 | 只看该作者
OKAKAKO 发表于 2023-12-19 10:21
分层设计,前期搭框架可能需要多花点时间,但是弄好了,后期开发和维护就很方便了。 ...

楼上说的很有道理,确实方便维护

使用特权

评论回复
14
星辰大海不退缩| | 2023-12-21 12:39 | 只看该作者
这个分层设计是太有必要的,有时就是思想的总结

使用特权

评论回复
15
szt1993| | 2023-12-22 08:19 | 只看该作者
实事求是的说分层设计是非常重要的思想,很有必要

使用特权

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

本版积分规则

1510

主题

4543

帖子

6

粉丝