精华内容
下载资源
问答
  • 产品分层图
    千次阅读
    2019-05-23 00:39:56

    注:仅供参考学习,欢迎交流

    更多相关内容
  • SOP-私域流量沙盘盈利系统(2产品分层表单).xlsx
  • SQL产品分层及编码基础培训.pptx
  • 分层

    2021-07-29 07:37:19
    本词条缺少概述,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!分层是指钢板与钢管轧制时形成的内部缺陷。通常由于钢坯质量问题(缩孔残余、气泡、夹杂、疏松)在轧制钢板和钢管时未能焊合而造成。可分离...

    本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!

    分层是指钢板与钢管轧制时形成的内部缺陷。通常由于钢坯质量问题(缩孔残余、气泡、夹杂、疏松)在轧制钢板和钢管时未能焊合而造成。可分离成两层或多层,分层面积大小不一。在横截面上从宏观上即可发现这些缺陷。由夹杂物引起的分层往往需要在加工(如卷板、弯管)之后才会发现。分层可使钢材的性能受到影响,因此制造锅炉、压力容器的钢板不允许有分层缺陷。一般可用超声检测方法检验出来。[1]

    中文名

    分层

    外文名

    lamination包    括

    冶金,矿物学,审计学,语文

    指    南

    从逻辑上将子系统划分成许多集合

    分层冶金

    编辑

    语音

    f8939a0b23aeffc6d4ef066aaa2affc0.png

    分层lamination: 在压坯或烧结体中形成层状结构缺陷或指缺陷本身。

    分层矿物学

    编辑

    语音

    294f975e96a72cfc9eade3339e574df0.png

    分层boundary examination,boundary inspection

    岩心编录时根据对岩心的观察研究而确定矿体边界、不同岩石间接触界线、断层等地质界面的工作。这项工作十分重要,它是未来钻孔柱状图以及地质剖面图编制的依据。分层之后,除对各层详细描述和典型素描之外,要计算换层深度,计算公式为换层深度=上回次孔深+换层处上段岩心长岩心采取率=本回次孔深-换层处下段岩心长岩心采取率。岩心编录时还要对矿体部分的岩心按取样长度规定及矿体内部结构划出采样线并计算出采样位置及样长。[2]

    分层审计学

    编辑

    语音

    审计准则术语之一。分层是指将一个总体划分为多个子总体的过程,每个子总体由一组具有相同特征(通常为货币金额)的抽样单元组成。分层可以降低每一层中项目的变异性,从而在抽样风险没有成比例增加的前提下减小样本规模。注册会计师可以考虑将总体分为若干个离散的具有识别特征的子总体(层),以提高审计效率。注册会计师应当仔细界定子总体,以使每一抽样单元只能属于一个层。

    分层语文

    编辑

    语音

    把一个段落分为几层。

    分层网络术语

    编辑

    语音

    分层简介

    分层是表示将功能进行有序的分组:应用程序专用功能位于上层,跨越应用程序领域的功能位于中层,而配置环境专用功能位于低层。分层从逻辑上将子系统划分成许多集合,而层间关系的形成要遵循一定的规则。通过分层,可以限制子系统间的依赖关系,使系统以更松散的方式耦合,从而更易于维护。子系统的分组标准包含以下几条规则可见度。各子系统只能与同一层及其下一层的子系统存在依赖关系。

    分层典型分层方法

    d1ec4d10052cbfe99d1e111e3bd4852a.png

    分层分层表示将功能进行有序的分组:应用程序专用功能位于上层,跨越应用程序领域的功能位于中层,而配置环境专用功能位于低层。层的数量与组成取决于问题领域和解决空间的复杂程度:通常只有一个应用程序专用层。如果领域中已有先前构建的系统,或有由较小的互操作系统构成的大型系统,各设计团队之间尤其需要共享信息。因此,业务专用层很可能部分地存在,并且为明确起见,可能将其分成几个层。如果解决空间得到中间件产品的充分支持,并且复杂的系统软件在其中起着更加重要的作用,解决空间就将具有经过充分开发的低层,并且还可能具有一些由中间件和系统软件构成的层。应当把子系统组织成分层结构,构架的上层是应用程序专用子系统,构架的低层是硬件和操作专用子系统,中间件层是通用服务。下面是一个四层构架的示例.顶层是应用程序层,它包括应用程序专用的服务。下面一层是业务专用层,它包括在一些应用程序中使用的业务专用构件。中间件层包括各个构件,例如 GUI 构建器、与数据库管理系统的接口、独立于平台的操作系统服务以及电子表格程序、图表编辑器等 OLE 构件。底层是系统软件层,它包括操作系统、数据库、与特定硬件的接口等构件。分层结构始于最初略的功能层次,然后逐步发展成多个更为具体的功能层次。

    分层分层指南

    458674194f68279b8d0499cf8da249e8.png

    分层分层分层从逻辑上将子系统划分成许多集合,而层间关系的形成要遵循一定的规则。通过分层,可以限制子系统间的依赖关系,使系统以更松散的方式耦合,从而更易于维护。子系统的分组标准包含以下几条规则:可见度。各子系统只能与同一层及其下一层的子系统存在依赖关系。易变性。最上层放置随用户需求的改变而改变的元素。最底层放置随实施平台(硬件、语言、操作系统、数据库等)的改变而改变的元素。中间的夹层放置广泛适用于各种系统和实施环境的元素。如果在这些大类中进一步划分有助于对模型进行组织,则添加更多的层。通用性。一般将抽象的模型元素放置在模型的低层。如果它们不针对于具体的实施,则倾向于将其放置在中间层。层数。对于小型系统,三层就足够了。对于复杂系统,通常需要 5-7 层。无论复杂程度如何,如果超过 10 层,就需要慎重考虑了。层数越多,越需慎重。以下列出了一些经验法则:特定层中的子系统和包只应同一层及其下一层的子系统存在依赖关系。如果不这样限制依赖关系,将会导致构架退化,使系统脆弱并难于维护。如果子系统需要直接访问低层服务,则属于例外:应理智地决定如何处理整个系统所需的基本服务(如打印、发送消息等)。如果解决方案是在中间各层之间有效地实施调用传递,将消息限制在低层就毫无意义了。

    分层分区模式

    分层在系统的顶层作进一步的分区会有助于对模型进行组织。以下分区指南提出了需要考虑的各种问题:用户组织。可以根据业务组织中各种功能的组织形式来组织子系统,如按部门进行分区。由于现有的企业模型具有严格的组织划分结构,所以这种分区通常要在设计的初期进行。这种组织模式通常只影响到顶部少数层,即应用程序专用服务,随着设计工作的深入,它通常会变得无关紧要。根据用户的组织结构来进行分区,可以为模型提供一个良好开端。由于用户组织的结构在很长时间以后可能会因业务重组而变得不稳定,因此不宜用作系统分区的长期基础。系统的内部组织应该使系统便于开发和维护,而不受它所支持的业务组织的影响。技能领域。在开发组织中,可以对子系统进行适当组织,以便将模型中的各个部分分派给不同的开发组。这通常发生在系统的中低层,它反映了在开发和支持复杂的基础结构技术时,需要有专门化的技能。这类技术包括网络与分布管理、数据库管理、通信管理,进程控制等等。根据能力来进行分区也可以在上层进行。在这些层需要具备问题领域内的特殊能力,以便了解和支持关键的业务功能;这样的例子有:电信呼叫管理、证券交易、保险申报处理和航空交通控制。系统分布。在系统的任何层中,都可以将层作进一步的“水平方向”细分,以反映功能的物理分布情况。反映分布情况的分区有助于预见到在系统执行过程中将发生的网络通讯。但是,如果配置模型发生显著改变,反映分布情况的分区则会使系统难以作出相应的改变。保密领域。有些应用程序,特别是那些要求有关人员通过安全审查才能进行开发和/或支持的应用程序,需要根据安全访问权限来进行分区。控制保密区域访问权的软件必须由通过相应审查的个人来开发和维护。如果项目中具有这种背景的人员有限,要求特殊审查的功能必须分区为子系统,并将独立于其他子系统单独开发。对其他子系统言,唯一可见的将是与该保密领域的接口。可变性领域。某些功能可能会用作可选功能,从而只在系统的某些变体中交付,这些功能应组织成独立的子系统,独立于系统的必需功能进行开发和交付。

    分层网络层次的划分

    分层ISO提出的OSI(Open System Interconnection)模型将网络分为七层,即物理层( Phisical )、数据链路层(Data Link)、网络层(Network)、传输层(Transport)、会话层(Session)、表示层(Presentation)和应用层(Application)。

    1. 物理层(Physical layer)是参考模型的最低层。该层是网络通信的数据传输介质,由连接不同结点的电缆与设备共同构成。主要功能是:利用传输介质为数据链路层提供物理连接,负责处理数据传输并监控数据出错率,以便数据流的透明传输。

    2. 数据链路层(Data link layer)是参考模型的第2层。主要功能是:在物理层提供的服务基础上,在通信的实体间建立数据链路连接,传输以“帧”为单位的数据包,并采用差错控制与流量控制方法,使有差错的物理线路变成无差错的数据链路。

    3. 网络层(Network layer)是参考模型的第3层。主要功能是:为数据在结点之间传输创建逻辑链路,通过路由选择算法为分组通过通信子网选择最适当的路径,以及实现拥塞控制、网络互联等功能。

    4. 传输层(Transport layer)是参考模型的第4层。主要功能是向用户提供可靠的端到端(End-to-End)服务,处理数据包错误、数据包次序,以及其他一些关键传输问题。传输层向高层屏蔽了下层数据通信的细节,因此,它是计算机通信体系结构中关键的一层。

    5. 会话层(Session layer)是参考模型的第5层。主要功能是:负责维扩两个结点之间的传输链接,以便确保点到点传输不中断,以及管理数据交换等功能。

    6. 表示层(Presentation layer)是参考模型的第6层。主要功能是:用于处理在两个通信系统中交换信息的表示方式,主要包括数据格式变换、数据加密与解密、数据压缩与恢复等功能。

    7. 应用层(Application layer)是参考模型的最高层。主要功能是:为应用软件提供了很多服务,例如文件服务器、数据库服务、电子邮件与其他网络软件服务。

    展开全文
  • 分层走班排课系统

    2019-04-15 08:45:38
    中高考改革背景下 分层走班选排课解决方案 ,本套选排课平台产品是一款针对中高考改革背景下的全方位智慧教务软件,主要包含选课指导、在线选课、排课、调课、考勤、评价、成绩分析等系统。不仅能够满足绝大部分中...
  • 分层法和分层图

    2012-07-24 10:59:57
    由于引起质量波动的原因是多种多样的,因此搜集到的数据往往带有综合性。为了能够真实地反映产品质量波动的原因和变化规律,就必须对质量数据进行适当归类和整理。
  • 面向产品设计结构的聚类分层分析.pdf
  • 分层实体制造中的成形材料为涂有热熔胶的薄层材料,层与层之间的粘结是靠热熔胶保证的。 LOM材料一般由薄片材料和热熔胶两部分组成。 ;对纸材性能要求;对热熔胶的性能要求;课后练习; 而热熔胶方面,目前EVA型热熔胶...
  • 针对独立运行的光储直流微电网,提出分层协调控制策略。第一层控制光伏和储能系统等单元独立运行,且各单元变流器可依次对母线电压进行自动调节
  • 测试分层

    千次阅读 2020-12-24 15:04:10
    从开发架构上来分层,目前接触到的项目,基本上都是如所示的架构模式(MVC),每一层都衍生出对应的测试: 对应的测试: 市场上的测试岗位大多数都是围绕这这些来设定的:功能测试,自动化测试,测试开发,性能...

    Time will tell.

    从开发架构上来分层,目前接触到的项目,基本上都是如图所示的架构模式(MVC),每一层都衍生出对应的测试:

    对应的测试:

    市场上的测试岗位大多数都是围绕这这些来设定的:功能测试自动化测试测试开发性能测试服务端测试

    最近几年都是服务端测试,基本上也是在接口层,但目前偏重数据层,也明白了数据的重要性,业务的根源在数据,从数据上可以反应业务的健康度。

    不要被表象中的自动化、性能所迷惑,觉得做测试往上走就是搞自动化,性能,这样太局限了。

    值得思考的是,即使你自动化搞得非常牛逼,性能也是吊炸天,然而业务没了怎么办? 即使你是工具组的测试开发,没有业务团队接入也是扯淡。因此测试的本质的业务的质量,而不是为了测试而测试。

    自动化是为了提高效率,是为了保证的解决业务的稳定性。性能是为了保证业务的体感。


    从流程上来分层,大致的研测流程应该都是大同小异,备注是测试可以涉及的点:

    质量体系的建设都跟跟随研测流程,好的质量体系是非常有必要的。说下目前团队的建设:

    • 需求阶段:研发怼产品在这边很常见,公司的文化就是人人都是产品,这也是对业务的一种帮助,要勇于对产品需求提出建议看法,要产品提出数据支撑,不能你想做什么功能就做什么功能,要有预期的值的估算,如做了XX项目,可以预计xx指标上升20%;

    • 提测:提测需要研发保证主功能没有问题,列出测试点和自测结果、测试难点,测试记录打回次数,这是质量的体现,还有单元测试要全部通过,push代码触发;

    • 回归测试:回归测试平台保证之前积累的回归用例全部pass,上线卡点

    • 线上:监控体系建设,服务器资源的监控依赖于公司部署平台,如500错误,CPU资源;核心业务场景接口监控,保证核心业务无误;接口可用性监控;第三方接口拨测监控…保证线上无重大问题;

    • 数据层:大盘数据的监控(阈值,波动值),数据分析衡量业务健康度;

    监控体系是保证线上的无重大故障,或者提前感知问题;

    自动化是测试效率的提升,保障业务迭代的稳定性;

    数据分析是数据的累积,业务健康度的考察;


    最后,以上的每一项展开都是一个课题,测试的水很深,个人期望自己也能成为某一方面的专家。随着细化,测试也在慢慢细化,如现在的App专项测试大数据测试算法测试

    也分享一个Python自动化资料学习扣裙:175317069。里面有已整理好的测试学习资源,也有行业深潜多年的技术人分析讲解。
    
    展开全文
  • 大数据存储及分层实践-7-3 阿里云数据库GDB的产品以及典型客户案例分享
  • 或牦牛的产品的消费前废物中获得的分层产品以及用于提供该产品的方法与流程.docx
  • #1 Magento 2 Ajax分层导航免费 产品过滤是每个客户都渴望在您的在线商店中使用的最常用功能之一。 为了明确起见,产品过滤是一种应用程序,买方可以选择一个或多个产品属性来搜索符合其需求的特定产品。 在没有...
  • 多使用纸材,成本低廉,制件精度高,而且制造出来的木质原型具有外在的美感性和一些特殊的品质,因此受到了较为广泛的关注,在产品概念设计可视化、造型设计评估、装配检验、熔模铸造型芯、砂型铸造木模、快速制模...
  • 具有恒定大小的密文的完全安全的分层内部产品加密
  • 交通运输-物流和出行服务行业快递行业跟踪点评:价格修复传导利润端,产品分层或加速.pdf
  • 刚挠结合板层压分层研究.pdf
  • 我们研究了由Tong和Wong承载磁性杂质的最新开发的产品Abelian规范场理论。 我们首先获得一个独特的解决方案的存在的充要条件,该解决方案可以实现多个旋涡形式的杂质。 接下来,我们将理论重构为扩展模型,该模型...
  • 摘 要 对HDI汽车板爆板问题进行了分析,主要讲述了问题形成的要素和原因,并提出了相对应的改善措施。  随着PCB业界不断进步,...坏点:爆板(1)。  根据客户反应基本信息, 对客户退回的不良板进行切片查看其
  • 【前言】按照产品在电磁兼容设计时所采取的各项措施的重要性为先后,分为若干层次进行设计,并加以综合分析进行适当调整直到完善,这就是本文提出的” 电磁兼容分层与综合设计法”。可以做到电磁兼容试验成功。 ...
  • 嵌入式框架分层

    2022-01-17 11:28:55
    如何进行嵌入式的框架分层,硬件驱动层?功能模块层?应用接口层?业务逻辑层?应用层?这些又是啥


    前言

    为了能够使得产品得到更好的开发速度与以后更好的迭代和移植,框架分层是很有必要的。但如对与中小型项目严格遵循这些原则,势必会消耗过多精力去思考怎么设计系统,这是一个抉择的过程。


    一、框架分层是什么?

    在嵌入式架构中:一般分为硬件架构与软件架构。这里是嵌入式软件设计,也是大多数人接触的设计。

    所谓的分层,也可以理解为模块化的设计,但是框架分层的设计一般会遵循一下几点原则

    • 每个模块提供的接口要统一,只能增加,不能改。在设计的时候得考虑好兼容性,使用起来麻烦不麻烦等等。
    • 同一级模块与模块之间相互独立,互不影响,不能相互调用,只能调用它下一层的接口
    • 不同模块构成不同的层,层与层之间不能跨级调用。
    • 模块中又可以继续分层,可以增减分层,这个需要根据自己的项目需求来进行设置。

    一般可以分为:硬件驱动层–>功能模块层–>应用接口层–>业务逻辑层–>应用层

    让我们看看这个经典的图,简单了解一下框架分层。
    在这里插入图片描述
    从图中不难观察出,设计都是遵循设计的原则的,层与层之间不能相互调用。

    二、框架分层的优劣势

    1.优势

    • 单一职责:每一层只负责一个职责,职责边界清晰,不会造成跨级调用,在大型项目中,每个人负责的部分不一样,加快整个项目的开发进度。
    • 高内聚:分层是把相同的职责放在同一个层中,所有业务逻辑内聚在领域层。在测试的时候,只需要测试该领域的层即可,一般不需要考虑其他层的问题。
    • 低耦合:依赖关系非常简单,上层只能依赖于下层,没有循环依赖。
    • 易维护:面对变更容易修改。在平台更改后,如果只是改了驱动,其他层都不需要动,只需要把驱动层给更改,其他层的功能不需要更改。
    • 易复用:如果功能模块变动了,只需升级相应的功能模块,其他的模块不受影响,应用层也不受影响。

    如果想要更好地利用这些优势,那得严格遵循设计的原则。

    2.劣势

    • 开发成本高:因为多层分别承担各自的职责,增加功能需要在多个层增加代码,这样难免会增加开发成本。但是合理的抽象,根据自己的项目设置合理的层级是能降低开发成本的。
    • 性能略低:业务流需要经过多层代码的处理,性能会有所消耗。
    • 可扩展性低:因为上下层之间存在耦合度,有些功能变化可能涉及到多层的修改。

    有优势也有劣势,需要根据自己的项目需要,进行部分的取舍,如果是中小型项目,可以不需要分层(如果不考虑到以后会迭代的话),或者部分分层就够了,既能利用框架分层的部分优势,也能降低开发成本。

    三、一个简单的例子

    由于主要讨论的是软件框架的分层设计,这里使用STM32cubemx来进行硬件的初始化,尽可能少考虑到硬件驱动的部分。

    以一个智能小灯的作为例子:
    功能

    • 按键控制小灯的亮度,等级为:0,1,2,3
    • 串口可以观察当前小灯亮度等级
    • OLED也可以观察当前小灯亮度等级

    下面就是这个例子的一个简单的图示。
    这和例子比较简单,业务逻辑层完全可以去除,直接从应用层调用功能模块层,加快开发进度。
    在这里插入图片描述
    最后附上一点点代码,就是关于LED如何进行在不同层进行封装

    硬件层

    首先看HAL库生成提供的代码,这个就是LED
    硬件层,也就是GPIO层,cubemx已经生成了,在stm32f4xx_hal_gpio.c(我用的是F4),以及有相应的GPIO的驱动了,这里不需要我们进行处理。
    在这里插入图片描述
    硬件层驱动层
    看LED部分的驱动:
    也就是下面的这两个函数

    void MX_TIM1_Init(void);
    void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle);
    
    /* TIM1 init function */
    void MX_TIM1_Init(void)
    {
    
      /* USER CODE BEGIN TIM1_Init 0 */
    
      /* USER CODE END TIM1_Init 0 */
    
      TIM_ClockConfigTypeDef sClockSourceConfig = {0};
      TIM_MasterConfigTypeDef sMasterConfig = {0};
      TIM_OC_InitTypeDef sConfigOC = {0};
      TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
    
      /* USER CODE BEGIN TIM1_Init 1 */
    
      /* USER CODE END TIM1_Init 1 */
      htim1.Instance = TIM1;
      htim1.Init.Prescaler = 168-1;
      htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
      htim1.Init.Period = 10000;
      htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
      htim1.Init.RepetitionCounter = 0;
      htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
      if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
      {
        Error_Handler();
      }
      sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
      if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
      {
        Error_Handler();
      }
      if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
      {
        Error_Handler();
      }
      sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
      sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
      if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
      {
        Error_Handler();
      }
      sConfigOC.OCMode = TIM_OCMODE_PWM1;
      sConfigOC.Pulse = 0;
      sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
      sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
      sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
      sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
      sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
      if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
      {
        Error_Handler();
      }
      sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
      sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
      sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
      sBreakDeadTimeConfig.DeadTime = 0;
      sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
      sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
      sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
      if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
      {
        Error_Handler();
      }
      /* USER CODE BEGIN TIM1_Init 2 */
    
      /* USER CODE END TIM1_Init 2 */
      HAL_TIM_MspPostInit(&htim1);
    
    }
    
    void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
    {
    
      GPIO_InitTypeDef GPIO_InitStruct = {0};
      if(timHandle->Instance==TIM1)
      {
      /* USER CODE BEGIN TIM1_MspPostInit 0 */
    
      /* USER CODE END TIM1_MspPostInit 0 */
    
        __HAL_RCC_GPIOE_CLK_ENABLE();
        /**TIM1 GPIO Configuration
        PE11     ------> TIM1_CH2
        */
        GPIO_InitStruct.Pin = GPIO_PIN_11;
        GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
        GPIO_InitStruct.Pull = GPIO_NOPULL;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
        GPIO_InitStruct.Alternate = GPIO_AF1_TIM1;
        HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
    
      /* USER CODE BEGIN TIM1_MspPostInit 1 */
    
      /* USER CODE END TIM1_MspPostInit 1 */
      }
    
    }
    

    对其进行封装,就是我们想要的Led小灯的驱动了,到时候如果需要,改驱动直接改底层就行了。

    void Led_init()
    {
    	MX_TIM1_Init();
    	HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2);//启动PWM
    }
    

    功能模块层
    根据上面的需求要求划分为四个不同等级,同时也需要对LED驱动进行进一步封装,以便满足层与层之间不能跨级调用的原则(到这里是不是发现很麻烦!小项目就不要用啦!)

    //ARR计数器设置值为0~10000
    #define LED_GRADE_0  0
    #define LED_GRADE_1  3000
    #define LED_GRADE_2  6000
    #define LED_GRADE_3  10000
    //设置LED亮度功能
    void Led_Set_brightness(int Grade)
    {
    	if(Grade==LED_GRADE_0)
    	{
    	    __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_2, Grade);
    		HAL_TIM_PWM_Stop(&htim1,TIM_CHANNEL_2);//关闭PWM输出
    	}
    	else
    	{
    		HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2, Grade);
    		__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_2, Grade);
    	}
    }
    
    //启动LED功能
    void Led_Start()
    {
    	Led_init();
    }
    

    业务逻辑层
    这里仅仅以启动层为例:

    void Start_app()
    {
    	Led_Start();
    }
    

    应用层
    基本流程是:启动业务逻辑->读取业务逻辑->处理业务逻辑->显示业务逻辑。

    四、总结

    到这里,一个简单的例子也解释完毕了,通过LED这个简单的例子,已经大概了解到这个设计的复杂了,如果是大型项目,运用起来会很爽,小型的话完全没必要这样分层,太麻烦了,严重减慢开发效率,时间都用在思考如何进行分层才能符合框架分层的原则。下一篇文章将会结合框架分层与MVC进行一个小综合。

    展开全文
  • 大数据存储及分层实践-9-3 一站式物联网存储产品的架构设计
  • Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器...它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工
  • 在分析分层方案对阶梯效应、支撑结构、制作效率、变形等影响的基础上,提出采用层次分析法和模糊综合评判相结合的方法对加工零件的分层方案进行决策。通过对鼠标零件加工方案的验证,证明该方法有效地避免了决策的...
  • 产品必学方法论(二):STP,用户分层-目标用户-业务定位 .doc
  • 交通运输业2021年投资策略:涅槃重生出行迎重构繁荣,产品分层顺丰筑第一快递-20201116-中信证券.pdf
  • hive分层结构

    千次阅读 2022-03-01 20:06:50
    DA层:数据应用层,提供产品和数据分析所使用的数据 四层结构 ODS层:临时存储层,一般来说是对企业中所产生的数据采集过来做临时存储,对数据源系统做解耦合,为下一步分析做准备 PWD层:数据仓库层,数据仓库层,...
  • 说下自己的理解:数据仓库是分层的,通常情况下都是进行三层建模(当然也不是绝对的)。例如上次说的商品订单数据表,表字段可能有非常多个,但是我们使用的时候可能只用到UID,PayTime,CreateTime, PayMoney,等字段...
  • 数据分层简述

    2021-10-29 10:41:15
    深入浅出理解「3层6类」数据分层 | 人人都是产品经理 【侵权即删!!! 】 数据是通过观测得到的信息,是对客观物质世界的记录。 数据建模是对客观物质世界的抽象,用数据来表征这个客观物质世界。 数据分层是把...
  • 开学宣传海报PSD分层素材适用于开学季促销海报设计

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 85,298
精华内容 34,119
热门标签
关键字:

产品分层图