,工作了许多年,都不会有软件架构的概念。 因为我在做研制工程师的第6年,才开端意识到这样的一个东西,在此之前,都是做一些最简略的项目,一个main函数干究竟,架构杂乱了反而是负担。 后边有幸,触摸了略微杂乱点的项目,感觉曾经水平Hold不住,然后借着项目需求,学习了许多优异的代码架构,比方曾经搭档的,一些模组厂的K,还有市面上老练的体系。 说出来或许有点夸大,一个好项目带来的生长,顶你做几年小项目。 在一个工程师从入门到成为高档工程师,都会阅历哪些软件架构?
这是最简略的一种程序规划办法,也便是咱们在入门时写的,下面是一个运用C言语编写的线性架构示例:
3.层次化架构层次化架构是一种将体系分解为多个层次的规划办法,每个层次担任不同的功用。
着以下是一个运用C言语编写的层次化架构示例,模仿了一个具有不一样权限等级的嵌入式体系。
事情驱动架构是一种编程范式,其间程序的履行流程由事情(如用户输入、传感器改变、定时器到期等)触发。 在单片机开发中,事情驱动架构一般用于呼应外部硬件中止或软件中止。 以下是一个运用C言语编写的事情驱动架构示例,模仿了一个根据按键输入的LED操控。
5.状况机架构在单片机开发中,状况机常用于处理杂乱的逻辑和事情序列,如用户界面办理、协议解析等。 以下是一个运用C言语编写的有限状况机(FSM)的示例,模仿了一个简略的自动售货机的状况转化。
6.面向对象架构STM32的库,便是一种面向对象的架构。 不过在单片机因为资源约束,OOP并不像在高档言语中那样常见,可是一些基本概念如封装和笼统依旧能被运用。
尽管C言语自身并不直接支撑面向对象编程,但可以终究靠结构体和函数指针模仿一些面向对象的特性。 下面是一个简化的示例,展现如安在C言语中模仿面向对象的编程风格,以51单片机为布景,创立一个简略的LED类。
在单片机开发中,假如没用实时操作体系,咱们咱们可以经过编写一个简略的轮询调度器来模仿根据使命的架构。
以下是一个运用C言语编写的根据使命的架构的示例,该程序在51单片机上完成。
为了简化,咱们将运用一个简略的轮询调度器来在两个使命之间切换:一个是按键扫描使命,另一个是LED闪耀使命。
8.署理架构这个咱们或许比较少听到过,但在略微杂乱的项目中,对错常常用的。
在署理架构中,每个署理(Agent)都是一个独立的实体,它封装了特定的决议计划逻辑和数据,并与其他署理进行交互。
在实践项目中,需求创立多个独立的使命或模块,每个模块担任特定的功用,并经过某种机制(如音讯行列、事情触发等)进行通讯。
以下是一个简化的组件化架构示例,模仿了一个单片机体系中的LED操控和按键输入处理两个组件。
文章出处:【微信号:nanshuqg,微信大众号:无边单片机编程】欢迎增加重视!文章转载请注明出处。
次阅览 --
次阅览 --
次阅览 --
编写并不便利,有一些更好的文本编缉器可供挑选,如UltraEdit,PE2等。当然,人们最
次阅览 --
次阅览 --
次阅览 --
次阅览 --
次阅览 --
次阅览 --
次阅览 --
次阅览 --
免费下载!51Hex_Bin、51波特率初值设定、51定时器核算、lcd汉字取模
次阅览 --
,开发过程中遇到过不少坑,这儿总结一下。一、仿线V整,这个坑太无语了,我实践项目中给
次阅览 --
大体分三种:1. 前后台次序履行程序2. 时刻片轮询法3. 操作体系二、前后台次序履行程序所谓的前台,便是自动去判别处理某个业务,这个是主循环里要做的事,也就
次阅览 --
不只结构明晰,还可以便于开发与保护。便于协助开发者掌握整个工程的结构三种