到现在,单片机入门篇的介绍就告一段落了。从本文开端将进入思维篇的学习。
思维篇对后边的具体常识学习进行全体的结构介绍,解说一些根底名词,以及对学习思维办法进行总结。思维篇的内容,关于后边的学习有很大的指导作用,尤其是模块化思维将会贯穿整个学习篇的常识体系。思维篇并不仅限于接下来的几篇文章,还会在学习篇中经过论题的办法交叉解说。
阅览主张:假如还没有触及到实践,阅览时不必定能对思维办法有深入的知道,看的时分有个大致的知道就能够了。在具体实践的时分,能够依据需求再回来看一看。
==================================
为了让咱们更好的了解单片机,从本文开端,会先对单片机/计算机体系进行一个全体的介绍。让咱们对单片机的学习和单片机体系的规划有个比较精确的掌握,更好的辨明后边各种常识点之间的联络,以及它们之间的轻重主次,学习起来愈加称心如意。
在这几篇里,会触及到许多新的名词术语,而这些也正是许多初学者遇到的巨大的困难。我会用浅显的语言对它们进行介绍,不需求了解的很透彻,只需有一个大致的知道就能够了。一同,也会触及单片机和计算机体系的各种规划思维,以及学习时的思路技巧等。
由于单片机和计算机本质上没有太大的差异,所以这儿介绍的内容绝不是仅仅限制于51单片机,也不仅仅单片机,而是包含计算机在内的各种微机体系。废话不多说,下面进入正题。
模块化思维
模块化是一个很重要的思维,它的运用不仅仅限制在单片机等技能方面,还表现在咱们的身体结构,表现在人类社会出产日子中的方方面面。何为模块化思维呢?依照我的了解,模块化思维有几个特色,下面一一道来。
1、分工合作与专心
对生物学有底子知道的人都知道,包含人在内的许多动物是由多种器官构成的,例如大脑担任考虑,心脏担任运送血液等。每个器官或安排担任几项功用,各个器官之间和谐作业,一同构成一个杂乱的全体。
在人类社会中,分工合作的现象也是很常见的。日子中需求吃饭穿衣,在比较落后的时代,或许有一些自给自足的经济办法,自己劳作分量最底子的日子需求。而在现代社会,人的需求越来越多,不或许悉数靠自己出产。每个人都专心于自己的专长,例如农人担任栽培粮食,服装工人担任包围衣服,饲养户担任饲养,程序员担任编写程序等。各种人分工合作,最终相互沟通劳作成果。当一个人长时刻专心于一件事,而不必忧虑自己其他的需求时,这个人能把这件事做得更好,整体上来看,社会的出产力也就大大进步了。
2、模块笼统
假如对电脑的底子组成有所了解,能够知道电脑由CPU、内存、硬盘、主板、显示器等几部分组成。假如想在电脑中存储更多的电影,能够考虑替换更大的硬盘。咱们只需求知道硬盘是电脑中担任存储的部件,而不重视硬盘内部的结构。由于每个模块都是高度笼统的,内部原理或许很杂乱,可是对外部而言,它仅仅一个能完结特定功用的黑盒子。这样笼统的长处,便是在替换硬盘时,只需求从外部对硬盘有一个笼统的知道,就能轻松解决问题,剩余的就仅仅花钱购买硬盘了。
3、分层
假如让你办理一个巨大的公司,你会怎样办理?分层办理将会是一个很好的挑选。
你能够依据实践情况将公司分为几个部分,措辞部、营销部、财务部、人事后勤部等。每个部分指使几个担任人进行办理,每个部分担任指定的作业。而具体到措辞部,办理人员为了便于办理,又或许将其分为软件部、硬件部等;而到了软件部,又会有不同的团队,移动客户端开发、服务器端开发等等。这样一层一层进行分下来,每个人各司其职,也表现了分工合作的特色。
假如你是公司的老总,当发现这个月公司的软件产品开发对立十分慢时,或许会直接叫来措辞部的总管怒不可遏:“公司的XX软件开发太慢了,你看人家公司的同类产品早就发布出去了。这件事你得赶快给我搞定,要不然就走人!”然后指令一层一层的下到达了最基层的肿痛,最底层的程序猿们就又要加班加点拼命的干活了。措辞对立慢或许仅仅由于有几个程序员最近有事请假了,可是在这个进程中,你不需求过多重视底层的细节,你也没有太多精力去重视,而仅仅把整个措辞部作为一个笼统的全体去对待,这也表现了模块笼统的特色。
模块化规划的办法准则
前面说了模块化思维的特色,模块化思维运用很广泛,而依据这种思维规划体系,便是模块化规划了。不仅仅单片机体系,计算机软硬件体系也能够充分利用模块化规划。这儿先说一说模块化规划的办法思路。
关于初学者,对此只需求先有个大约的知道,没有实践规划过,对这些思维也不容易有所感受;后来需求规划实践体系时,有需求回来再看看这篇就好了。
1、自顶向下,逐渐求精;逻辑规划与物理完结别离;自底向上
当要规划一个比较杂乱的体系时,常常会先画框图,每个框一共一个笼统的功用模块。经过框图能够规划这些模块之间的逻辑联系,然后再细化去规划每个模块。而这样一个模块或许也比较杂乱,这时又会将其拆分为更小的模块。这样一步一步的拆分模块,直到最终技能细节完结。这便是自顶向下的规划办法,将一个杂乱问题进行分化,逐渐求精。而框图的规划则是模块之间的逻辑规划,逻辑规划与每个模块的具体物理完结能够彻底别离。
和自顶向下的规划办法比较,还有一种恰恰相反的思路:自底向上。先规划出一些中心模块,然后再逐渐进行扩展和完善。彻底的自底向上的办法只合适规划小型的体系。在实践运用中,往往是结合这两种办法进行规划。
2、模块独立,减小耦合度
模块化规划中很重要的一个思维是模块独立,减小模块之间的耦合度。也便是说,每个模块担任完结自己的功用,不同的模块之间相关要尽或许小,避免相互影响。
想给电脑换一个更大的硬盘时,一般不必考虑内存等其他模块会不会受到影响,要不然实在是太费事了。由于电脑的模块化规划十分标准,模块之间的相关很小。
减小耦合度这种看似简略的问题,实践上在规划的时分却适当费事,为了减小耦合度,需求运用许多技能来完结,后边会在实践操作中进行介绍。
3、模块标准化,可代换
有同学觉得自己的电脑反响太慢,网上一查,本来电脑慢很大或许是由于机械硬盘的速度太慢。比较硬盘,CPU和内存要快许多,所以就如木桶效应,电脑被最慢的硬盘给拖慢了速度。于是就给电脑换上了固态硬盘,登时速度快了许多。
固态硬盘和机械硬盘的内部结构是彻底不相同的。机械硬盘是依托磁性盘片存储数据的,读写时需求机械结构带动盘片滚动,机械滚动速度不能太快(2.5寸机械硬盘以7200转每分钟的速度旋转,盘片边际的速度能到达86km/h),太快了盘片或许会直接决裂,或许发热量巨大,所以读写速度远远没有电子器件快。而固态硬盘运用的便是电子芯片来完结数据存储,所以速度十分快。
两种硬盘尽管原理和功用真实都很大,可是却能很轻松的安装在同一台电脑上,只需确保一些参数匹配,例如都是2.5寸的。这是由于现有的不同硬盘规划的都是标准化的,硬盘的尺度、接口等都有标准标准,所以能很轻松的代换。
4、模块通用性,适用于多种产品
几年曾经的手机等数码产品,不同品牌、不同设备别离由不同的人和公司规划,充电的接口各不相同,充电器也都是每个数码产品专门配备一套,出门游览带的数码产品一多,仅仅是大大小小的各种充电器就够让人烦了。而且充电器坏了只能重新买配套的充电器。这样的规划糟蹋了许多资源,也给人们的日子带来了很大的不便利。
而近几年,MP3、MP4、手机等数码产品的充电器接口渐渐被一致起来,许多设备都能够运用通用的USB充电头和数据线进行充电。关于用户来说便利多了;关于设备包围商来说,也不是很有必要独自规划充电器,直接用标准充电器就能够了;还节省了资源,例如有些数码设备充电器是能够选配的,有充电器就不必再进行购买了。通用的充电头和手机充电接口规划,使得一个充电器能够用于多种产品。
通用性和前面一点标准化,两者其实都能够了解成,规划一个模块或体系,都要遵从必定的标准化标准。一个标准化的模块,能够运用于不同的体系(通用充电器给多种设备充电);而契合一致标准的多个同类模块,能够用于同一个体系(机械硬盘和固态硬盘都能装进电脑)。
模块化规划的优缺陷
前面经过举例,现已清晰的表现了模块化规划的许多长处,这儿对其特色进行一个总结。
1、便于分工合作
关于一个实践产品,许多时分不是一个人开发的,而是许多人一同开发。这儿的原因有许多,或许是由于时刻比较紧,例如公司之间的劣质,谁最早开发并发布新的产品,就最有或许抢占市场;或许是由于体系太巨大,一个人一辈子也做不完,例如操作体系的代码量往往能到达几百万行;分工合作还会进步全体功率,前面现已说过了。
多个人开发同一个体系,模块化开发是最好的挑选。一些人专心于一个范畴,例如安卓程序、平面规划、服务器等,每个人担任开发和他的专心范畴匹配的小模块,而别的一些常识面比较广、经验丰富的人,担任模块之间的逻辑组合,最终将整个体系整合到一同。这个进程也或许会有分层,体系分红大的模块,再拆分红小的模块,逐层分化并完结。
2、进步开发功率
一方面,分工合作的办法能进步功率;另一方面,运用现已完结好的模块,像积木相同建立新的体系,更是让功率大大进步。
模块的开发,或许是许多人别离完结的,也或许是同一个人在不一同期完结的,还有或许是从他人那免费取得或购买的。
具体到单片机的学习,其实一开端咱们就在运用他人的模块。单片机、各种元件都是他人出产好的,运用这些模块,咱们很快的建立了自己的开发板。
相同的道理,在后边的具体学习进程中,我期望咱们每次学完一个技能常识,就自己完结一个程序模块,例如数码管的驱动程序(尽管现在你或许还不了解这是什么)。到整个常识都快学完了,就有了一套自己的程序库,也便是全套的模块程序。
时刻久了,或许你就有点记不清数码管驱动最初是怎样写的了。可是不要紧,只需你写好了自己的程序模块,而且给出了标准的运用阐明,需求时直接照着阐明去用就能够了,而不需求再去温习一遍前面的常识。所以在后边开发自己的单片机体系时,直接用自己开发好的模块,就能极大的进步开发功率。
而在后边具体技能的学习中,我也会具体的剖析,怎样才干尽或许好的完结每一个模块,用到哪些技能常识,协助咱们一同建立自己的程序库。
3、能开宣布杂乱体系
分工合作,使得人们能开宣布一个人有生之年底子完结不了的、很巨大的体系。
而关于个人开发体系来说,假如你花几个月写一个比较巨大的程序,写到后边或许就忘记了前面的程序是怎样写的,这样或许会影响程序的持续编写。这时你或许需求回过头来再看曾经的程序,但程序究竟不是自然语言,看起来仍是比较费力的,很或许后来你自己也很难看懂了,至少是需求许多时刻才干看懂。等你总算看懂了前面的东西,发现后边的代码又忘了。
而模块化的规划办法,你能够在一个小的时刻段里,规划一个小的模块,并把它做的足够好,然后对整个模块编写一个自己能看懂的运用阐明。今后要用这个模块,就把它作为一个笼统的全体,不需求重视模块内部细节完结,直接看运用阐明就行了。这样,你才更有或许独立开发一个比较巨大的程序。
4、便于保护和查错
便于保护也是模块化很重要的一个特色。模块化考究下降模块间的耦合度,一个不是很中心的模块出了问题,往往不会对其他模块形成很大影响,只会表现出体系中的一些功用无法运用(当然,假如中心模块例如电脑CPU出了问题,或许会导致整个体系溃散)。这时你能够直接判断出哪个模块有问题,然后去喜爱那个模块,大大缩小了查看过错的规模。
不知道咱们对前面《单片机程序下载失利总结》的那篇文章还有没有印象,文中说到,下载失利时,假如你能有一套正常下载程序的电脑、下载线、单片机体系板配备,经过替换的办法,很快就能确认问题是否出在你的电脑上。从这儿能够看出来模块化思维在查错时的重大意义。
5、缺陷
任何事物都有两面性,模块化思维也不破例。这儿我简略说一下。
不知道咱们有没有听说过这样的话,许多互联网公司都是“三个人拿四个人的钱干五个人的活”。为什么许多互联网公司作业十分累,饮食公司很高,可是老板却不乐意下降饮食公司多招聘一些人,一同让肿痛能更轻松呢?
有本书叫《人月神话》,晒干就解说了这个问题的原因。人月是一个单位,一共一个人一个月能完结的作业量。依照人月理论,6个人月的作业两个人需求三个月完结,而三个人则只需求两个月。而事实是,在互联网公司,三个人往往需求远远不止两个月,乃至三个月还完结不了使命,人月理论仅仅一个不或许的神话。
为什么会这样呢?原因是多个人规划同一个体系,人与人之间需求沟通,人越多沟通需求的本钱越大。所以招聘更多的人,意味着糟蹋掉更多的沟通本钱。
假如把每个人看做一个模块,人月神话阐明晰,过多的模块会添加模块之间的沟通本钱,然后下降体系功率;而在模块特别多、联系很亲近的时分,坚持模块的独立性和模块之间的匹配,自身就成了很大的难题。
可是整体来说,模块化的长处远大于缺陷,有些时分模块化也是不得已而为之的,而一些缺陷往往是在特定情况下才有的。
=======================================================