0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

Dp1040 来源:嵌入式专栏 2023-09-23 09:31 次阅读

有网友问:单片机小项目,有必要做分层设计吗?

这个问题,主要看项目本身,以及公司管理。小项目,是有多小?公司对项目的管理是否看重?

正规一点的公司,从长远的角度来说,很有必要做好软件分层设计。下面就简单说两点编程分层的思想。

分层思想

嵌入式分层思想,可能初学者不太懂,但你肯定见到过很多类似下面这样的软件结构图。

比如,RT-Thread Nano内核结构:

ed682100-59a8-11ee-939d-92fbcf53809c.png

STM32Cube软件结构:

ed773b40-59a8-11ee-939d-92fbcf53809c.png

这种软件结构图,里面的东西可能有点多,可能你也看不懂。 但是,只要你仔细一看每个区域的划分,你就会发现,它们是把软件划分了多个区域,这里其实就是一种分层的思想。

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

遇到这种嵌入式软件开发,你会怎么编程?

1.底层驱动层小车部分:电机驱动(比如IO时钟、PWM配置)封装成一个函数、433驱动封装成一个函数。然后把这两个函数整理在一个Driver(驱动)函数。

遥控部分同理:按键驱动(比如IO时钟、配置)封装成一个函数、433驱动封装成一个函数。

2.中间层这里比如你电机用到了加减速、左右转向的一些算法,封装成对应Middleware中间层模块函数(待应用层调用)。

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

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

模块化

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

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

如果你把所有代码都写在main函数,你说能实现吗?当然,肯定也能实现。 但是,你这样写,你的业务逻辑代码是不是很废脑、很费时间? 还有,你后续加修改按键方式、添加功能,你该怎么办?

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

上面其实也说了:电机驱动(比如IO时钟、PWM配置)封装成一个函数,这其实就是一个小模块。 当然,这里的驱动函数只是一个小模块,然后还需要进一步封装成“大模块”。

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6002

    文章

    43982

    浏览量

    620916
  • 无线通信
    +关注

    关注

    56

    文章

    4202

    浏览量

    142355
  • 电机驱动
    +关注

    关注

    59

    文章

    1067

    浏览量

    85874

原文标题:单片机项目有必要分层设计吗?

文章出处:【微信号:玩点嵌入式,微信公众号:玩点嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    编程器还有必要买单片机学习板吗

    请问编程器还有必要买单片机学习板吗
    发表于 04-09 11:29

    浅谈单片机程序设计中的分层思想

    麻烦!!” 这不禁让我想起开始学单片机的时候写这种按键的那程序,乱七八糟的结构。如果不相信的话,可以自己用51写一下哦,那样就更加能体会本文说的分层结构的优越性。项目要求:两个按键,分别分配在P10
    发表于 10-31 10:22

    初学单片机必要单片机学习板吗?

    初学单片机必要单片机学习板吗?如果需要的话,请推荐?要求功能强大,附带资料齐全,适合初学者,学完以后还有使用价值。如可以学别的单片机。回
    发表于 11-09 14:23

    浅谈单片机程序设计中的“分层思想”

    本帖最后由 ke_c 于 2013-8-1 10:41 编辑 浅谈单片机程序设计中的“分层思想”分层的思想,并不是什么神秘的东西,事实上很多做项目的工程师本身自己也会在用。看了不
    发表于 08-01 10:38

    学习单片机真的必要学习汇编

    学习单片机真的必要学习汇编,从51单片机汇编语言开始学习,这是入门级的。网上好多都是C语言方面的资料,有的人说没必要学汇编,直接学习C语言
    发表于 08-18 07:57

    单片机常见项目

    单片机常见项目一些比较实用的51单片机设计。
    发表于 05-08 19:30

    大家学习单片机平时记笔记吗,必要

    大家学习单片机平时记笔记吗,必要
    发表于 09-27 22:50

    单片机程序设计中的“分层思想”

    多说了。第二个就是“分层屏蔽的设计思想”。下面用扫描键盘程序例子作为引子,引出今天说的东西。问题的提出单片机学习板一般为了简单起见,将按键分配的很好,例如整个4*4的键盘矩阵分配到P1口上面,8条控制线
    发表于 12-04 15:17

    干货!单片机程序设计中的“分层思想”

    吗?”我相信很多人肯定会说“很麻烦!!” 这不禁让我想起开始学单片机的时候写这种按键的那程序,乱七八糟的结构。如果不相信的话,可以自己用51写一下哦,那样就更加能体会本文说的分层结构的优越性。项目要求
    发表于 12-30 10:18

    单片机程序设计中的“分层思想”是什么意思?

    单片机程序设计中的“分层思想”
    发表于 02-22 07:18

    单片机分层屏蔽的设计思想

    单片机分层屏蔽的设计思想
    发表于 02-26 06:19

    单片机项目失败的原因哪些?

    单片机项目失败的原因哪些?
    发表于 04-19 07:33

    MCU级软件必要分层

    一、MCU级软件必要分层吗?1.1 如果不分层会怎样?看下面这段示例代码void main(){sys_init()while(1){ //用PA1控制LED亮灭GPIO_SetBi
    发表于 11-03 08:57

    单片机中的晶振为什么这么必要

    单片机中晶振是普遍存在的,那么晶振为什么这么必要,原因就在于单片机能否正常工作的必要条件之一就是时钟电路,所以单片机就很需要晶振。电子学习
    发表于 02-24 06:23

    单片机晶振的必要性_单片机晶振的作用_单片机晶振电路原理(51单片机

    本文首先介绍了单片机晶振的必要性,其次介绍了单片机的作用和原理,最后阐述了单片机晶振的常见问题。
    的头像 发表于 04-18 11:49 7.3w次阅读