本文内含多次观点转变,中间的观点均是笔者曾产生过的有趣想法,只有最终的观点才是笔者目前的观点。若读者并没有阅读完全文,请忘掉在所阅读的部分中汲取到的观点。
我在学啥
当笔者意识到这个问题的时候自己已经在思考这个问题了,由于学长们总是会在笔者面前嘴里不断地往外冒出这几个词语:
“控制器”、“单片机”、“内核”、“外设”
所以单片机到底是个啥?是个控制器吗?还是说是个电脑?内核又是个啥?单片机是电脑的话那内核是CPU咯?外设又是什么玩意儿?单片机的鼠标键盘吗?
类似的问题一直萦绕在笔者的小脑瓜中挥之不去,真的很好奇这些问题的答案,于是笔者开始打开一个个浏览器标签页,最终其实也没搞明白个所以然。
大概就是在这种完全不知道自己在学什么的状态下,接触了ST的HAL库,接触了德仪的SDK,还接触了逐飞的TC264;做了智能小车,做了风力摆,又做了一堆乱七八糟的小项目。
笔者隐约发现,似乎无论在做什么,单片机总是最核心的那一个,承担了数据处理和程序调度的重任,果然单片机就是一个控制系统的内核吧!
既然单片机是控制系统的内核,那么外部所用的超声波测距模块一定就是外设吧!
事情似乎开始不太对
一次无聊冲浪的时候,了解了一下有关控制系统的内容:
原来控制系统是由控制器和执行器组成的。
这样看来笔者之前的理解有误,应该将单片机称为一个控制系统的控制器,那既然有了控制器就应该有相应的执行器,很显然,对于一辆小车而言电机就是系统的执行器。
读者可能会将超声波测距模块理解为执行器,但是其实他应该属于传感器的范围之中,而传感器在一个控制系统中的作用是获取数据并反馈给控制器,并不能直接影响系统的输出,因此并不是执行器。
由于执行器一词并不在本文的讨论范围内,故此处不会展开说明。
不过这个问题虽然搞懂了,但是事情似乎开始不太对了:
内核是啥?外设又是啥?
最终思考无果,笔者无奈地认为:单片机就是控制系统的控制器,电机等为控制系统的执行器,而控制器就是内核,执行器就是外设。
未曾设想的降维打击
单片机里面有什么?
某一天,这样一个想法出现在笔者脑中挥之不去。看到这里,相信读者已经发现了一件事:
笔者的思考一直停留在控制系统的维度,一切的认知都停留在对于控制系统组成的理解,在每次思考中,单片机仿佛就自然而然地应该是一个整体。
然而其实并不应该是这样的,也就是说此前笔者的思维一直被封锁在了控制系统的维度。
思维继续向下延伸:如果内核和外设并不是相对于控制系统呢?
内核是单片机的内核,外设是单片机的外设
内核和外设都是单片机维度下的东西,而不是控制系统维度下的东西。
想通了这里,笔者意识到自己原来的想法受到了降维打击,一个新世界似乎出现在了眼前。
单片机是个电脑?
显然将一个控制系统比作一个计算机是不合适的,毕竟你不能说一个身上插满杜邦线、脚下有四个轮子、会自己随便乱跑的怪物是计算机。
同时将单片机比作电脑的CPU也是不合适的,因为CPU主要执行计算的工作,而不是像单片机一样可以采集电压,可以定时,可以输出电平......
那么什么可以被类比为电脑?
相信读者能够猜到了:单片机。
背后的的原因也很简单:和之前说的一样,电脑和控制系统并不是同一个维度,而单片机和计算机才是同一个维度的东西。
理解了这个问题就会水到渠成地认为单片机的内核其实就相当于电脑的CPU,而单片机的外设其实就相当于电脑的其他部分。
例如:STM32F1系列的单片机就是Cotex-M3内核,而GPIO、定时器、ADC等都是单片机的片上外设。
简单总结
控制器是控制系统的组成部分,单片机可以作为控制系统的控制器,内核是单片机的核心,而外设则是我们平时大量使用的单片机内除内核外的其他功能模块。