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(速度,方向)。这就是一个大模块(当然,还可以结合需求再进一步封装)。

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

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

    关注

    6030

    文章

    44489

    浏览量

    631884
  • 无线通信
    +关注

    关注

    58

    文章

    4493

    浏览量

    143344
  • 电机驱动
    +关注

    关注

    60

    文章

    1193

    浏览量

    86550

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

    单片机程序设计中的“分层思想”
    发表于 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

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

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

    51单片机和STM32单片机哪些区别

    大部分朋友可能都知道51单片机和stm32单片机也知道一般入门会先学习51单片机在学习stm32单片机会简单一些,但是对于51单片机和stm
    发表于 08-13 17:32 17次下载
    51<b class='flag-5'>单片机</b>和STM32<b class='flag-5'>单片机</b><b class='flag-5'>有</b>哪些区别

    单片机实践项目》《电子DIY》基于51单片机的模拟射击游戏的设计与制作(基于的51单片机射击游戏设计),Proteus仿真

    单片机实践项目》《电子DIY》基于51单片机的模拟射击游戏的设计与制作(基于的51单片机射击游戏设计),Proteus仿真视频教程
    发表于 11-04 15:51 64次下载
    《<b class='flag-5'>单片机</b>实践<b class='flag-5'>项目</b>》《电子DIY》基于51<b class='flag-5'>单片机</b>的模拟射击游戏的设计与制作(基于的51<b class='flag-5'>单片机</b>射击游戏设计),Proteus仿真

    单片机程序应用、驱动分层独立开发方案

    单片机程序应用、驱动分层独立开发方案
    发表于 11-13 12:36 19次下载
    <b class='flag-5'>单片机</b>程序应用、驱动<b class='flag-5'>分层</b>独立开发方案

    51单片机仿真设计项目大全

    51单片机仿真设计项目大全!
    发表于 11-23 16:51 119次下载
    51<b class='flag-5'>单片机</b>仿真设计<b class='flag-5'>项目</b>大全

    基于proteus学习51单片机项目资料

    为了调试51单片机的代码,做了一些仿真,之前打算好好写写技术文章的,后来觉得CSDN关于51单片机基本的模块都介绍很详细,就没必要再写了,后面要基本搞stm32实战的项目了,将自己调过
    发表于 11-23 16:51 3次下载
    基于proteus学习51<b class='flag-5'>单片机</b>的<b class='flag-5'>项目</b>资料

    ARM单片机和STM32单片机之间什么区别

    单片机工程师在进行项目开发的时候,经常需要进行单片机选型,根据项目功能需求选择合适的单片,这就要求对每种
    的头像 发表于 01-07 13:59 1.1w次阅读

    单片机实验项目分享

    单片机实验项目分享
    发表于 02-20 16:22 33次下载

    单片机最小系统能够运行起来的必要条件

    单片机最小系统能够运行起来的必要条件: 一、硬件方面的必要条件 单片机芯片:单片机最小系统需要选择一款适合
    的头像 发表于 01-15 09:34 1260次阅读