第一层/我来了

处在这一层的典型是可以用C语言写简单的逻辑控制,如闪烁LED,简单数码管显示,简单外围模块驱动实验。一般对单片机感兴趣,经常动手实践的人,半年左右,可以练到此地步(针对没有接触过单片机的人而言)。

此层最典型的示例就是,扫描按键时候,检测按下--延时20ms--再次检测按下--返回键值或等待释放。如果你是这样做的,或者正在这样做,毫无悬念,应该处于这个级别。对于95%的电类专业学生来说,毕业时候,远远低于这个级别,剩下的5%则依次分布在各层上。这也是为什么学单片机的人成千上万,而会用的人寥寥无几的原因。

第二层/真的打呀

步入这一层的典型标志就是开始思考自己所写的程序是否能够有一点实用价值。譬如应用在实际工程项目中。在这一层,应该开始思考如何让程序结构简单模块化,如何合理的利用CPU的时间。我曾经写过这一层的一点简单教程。对付这一层应该是绰绰有余了。

第三层/时间,说爱你不容易

这一层是建立在第二层的基础上面。从第二层跨越到这一层,需要很多代码行的积累。在这一层,你对系统中的各个模块应该能够很好的区分。同时对于时间的应用安排更加合理。在这一层,同时也应该考虑时间驱动的设计模式。如何让CPU更有效率的利用起来,需要长时间的积累,并非看,想就可以弄明白,而是不断的实践。

第四层/状态,你在哪里

这一层同样建立在第三层基础之上。掌握了以上三层,只要基本不涉及复杂算法的程序,可以组织小规模的程序的编写了。在这个时候,如何有效区分系统中的状态,利用状态来进行迁移,变得尤为重要。有人说通用结构好。反而我认为,针对特定应用来规划更优秀。对于单片机程序而言,几乎没有能够一摸一样的项目。而对于可移植性而言,能够做到函数级别的复用,已经非常难能可贵了。

第五层/时间,还是时间

时间具备精确性、模糊性、可丢失性,这三个特性是从应用时间的不同角度来描述的。精确性应用在精确地定时、计时的场合,它是个强实时的概念,比如测量频率。模糊性应用在需要稳定计时的场合,它追求的是长时间的稳定性,而忽略定时每刻发生的时刻,比如显示日期时间。

可丢失性是非重要的计时,它只要求阶段性时间符合而不要求一定时间到达就必定发生,比如LED闪烁的时间控制、倒计时执行某些功能性操作,通常是使用时间系统的时间发生标志。同时在这一层如果能够将WINDOWS程序设计中的一些优秀思想利用起来,则非常好。能够领悟到这一层的,在我所知道的前辈高手中少之又少。

第六层/丰富你的视界

这一层是我自己安排的位置。相比前面几层而言,我觉得它更为重要。写单片机程序,什么最痛苦,当然是做界面最痛苦。一个好的产品,离不开好的UI。在这里,你需要设计简单易用同时好看的人机接口非常不容易。

而且对于简单单色点阵液晶的操作,能够做到显示界面非常好看,同时程序结构清晰,非常不容易。很多人都说,设计界面,就像绣花似的。太痛苦了。我一直在折腾,现在还没有一个定论,到底是通用的结构好,还是针对特定用途还设计好。按照我在第四层中的说法,这里应该根据特定用途来规划更好些。

第七层/我们说好的

这一层主要是各种各样的协议的熟悉。非常重要,因为这个是和实际联系最为紧密的。工业现场的各种传感器,采集仪表如何将采集到的数据有效的发回给上位机。两者能够可靠的通信,软件层面上都离不开它们。

第八层/别争了,我来分配

还在为该如何分配CPU的时间嘛。其实不用苦恼。千万不要什么东西都重新自己造。你想开车,不用自己造轮子吧,买一个就可以了。前人其实对这些问题都研究过非常多了。因此操作系统应运而生。有人说,如果学会了在操作系统上面写程序,将绝不想再回到以前的那种编程方式,听起来非常诱人。

第九层/穿着操作系统去裸奔

什么,都用上操作系统了,还想着裸奔。太花心了吧。非也。这里是将前面几层所提及到的一些思想与第八层融汇贯通。可以说,在这一层,需要对前面的每一层都非常的熟悉。并经过很多实际项目的磨练方能有所体会。

第十层/无招胜有招

能够达到这一层的应该算的上是屈指可数的高手之一了。在这一层上,除了前面九层的熟练应用之外。更牛的人应该是可以设计操作系统,设计gui之类的。要达到这一点,需要非常多的基础知识,以及大量的专业知识以及实践,再加以10-20年的实战经验,以及一颗不沉寂的心。在这里,无招胜有招,非常熟悉MCU的特性,能够利用这种各样的技巧。这样的高人,在国内数一数二的电子论坛里也不在少数。

写在最后

单片机的本质只是一个工具。因此,更为重要的是模拟电子,数字电子以及其它基础的专业课程。很多人都说大学学的东西没有用,其实这个才是最大的谬论。万丈高楼平地起,没有这些专业基础课程的支撑。以后工作中进步非常缓慢。道理很简单。学的东西都是建立在以前的基础课程上面的。如果一个连三极管的放大电路都不会分析的人,我不相信他可以设计出优秀的电路来。因此作为一个合格的电子工程师,除了掌握广泛的专业知识技能外,时刻不能够停止学习的脚步。

-END-

﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

免责声明:本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系,谢谢!

猜你喜欢

老司机们都是怎么学习STM32的?

Linux 自学大全,16张思维导图!

硬件工程师和软件工程师哪个更有前途?

最 后

若觉得文章不错,转发分享,也是我们继续更新的动力。

5T资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、单片机、等等

在公众号内回复「更多资源」,即可免费获取,期待你的关注~

长按识别图中二维码关注

单片机开发设计之十层功力相关推荐

  1. 51单片机开发设计 基于52单片机的电子琴

    一.系统设计 8个按键可以弹奏8个音符,蜂鸣器可以播放按键弹奏的音乐,数码管会显示相应的音符,通过无线模块可以将按下的音阶数据上传到上位机端并进行显示,可以按照乐谱进行音乐演奏,在与上位机进行通信时会 ...

  2. 108K加湿器开发方案 单片机 NY8A051F 单片机开发设计开发

    NY8A051F是台湾九齐科技股份公司推出的以EPROM为记忆体的8位微控制器,专为多I/O口产品的应用而设计,例如遥控器,风扇,灯光控制或者游戏机周边等等.代码指令简单,适合初学者学习之用. NY8 ...

  3. 108K加湿器开发方案 芯片制造 NY8A051F 单片机开发设计开发

    NY8A051F是九齐科技股份公司推出的以EPROM为记忆体的8位微控制器,专为多I/O口产品的应用而设计,例如遥控器,风扇,灯光控制或者游戏机周边等等.采用CMOS制程并同时提供客户低成本,高性能等 ...

  4. 嵌入式开发比单片机要难很多?谈谈单片机和嵌入式开发设计经历

    嵌入式开发比单片机要难很多?谈谈单片机和嵌入式开发设计经历 \\\插播一条:文章末尾有惊喜哟~/// 单片机和嵌入式,其实没有什么规范的定义来区分他们,对于进行过单片机和嵌入式开发的开发者来说,都有他 ...

  5. 基于51单片机的多层电梯(1-16层)运行系统仿真设计_层数可改

    基于51单片机的多层电梯(1-16层)运行系统仿真设计_层数可改 仿真图proteus 8.9 程序编译器:keil 4/5 编程语言:C语言 设计编号:S0027 视频演示 基于51单片机的多层电梯 ...

  6. 单片机c语言程序开发洗衣机,单片机课程设计(洗衣机控制系统).doc

    实用标准文档 文案大全 PAGE 4 东北石油大学 课 程 设 计 课 程 课 程 单片机课程设计 题 目 洗衣机控制系统设计 院 系 电气信息工程学院 专业班级 测控14-1班 学生姓名 孔锡达 学 ...

  7. 嵌入式开发要难于单片机开发?

    关注.星标公众号,直达精彩内容 ID:技术让梦想更伟大 来源:网络素材 单片机和嵌入式,其实没有什么标准的定义来区分他们,对于进行过单片机和嵌入式开发的开发者来说,都有他们自己的定义,接下来,就谈谈本 ...

  8. 基于AltiumDesigner的PCB及原理图项目设计经验分享 [硬件开发设计]

    文章目录 往期系列文章 一.市面上主流的三款低.中.高PCB画制软件(EDA) 二.PCB总体设计思路与原则 三.产品基本设计步骤 四.原理图设计注意事项 五.原理图操作 六.PCB设计 - 布局注意 ...

  9. [转] 单片机硬件设计 转载自 麦麦

    下面是总结的一些设计中应注意的问题,和单片机硬件设计原则,希望大家能看完 (1) 在元器件的布局方面,应该把相互有关的元件尽量放得靠近一些,例如,时钟发生器.晶振.CPU的时钟输入端都易产生噪声,在放 ...

最新文章

  1. Oracle Execute Plan原理分析与实例分享之一
  2. 脚踏板USB接口与无线遥控连接方案论证
  3. 如何用c语言倒序输出字母,菜鸟求助-如何用指针法将一串字符按单词的倒序输出?如:i love yo...
  4. python中的面向对象
  5. 如何计算一只鸡的表面积?
  6. 2021年暑期旅游数据报告
  7. 分享3段平时很实用的微代码,高手莫喷
  8. 电机入门之路系列1--减速步进电机的原理
  9. nodejs ffmpeg 超级工具 rtsp fmp4 rtmp
  10. 英国电信移除华为设备后,多家运营商继续与华为合作,并达成20亿英镑协议...
  11. [原创] 测试策略是什么?
  12. Linux之创建DBeaver桌面图标
  13. c语言表示三八译码器原理,三八译码器的结构、原理与设计.docx
  14. 跨境支付产品:现钞与现汇
  15. 用python根据生日判断星座_求指教,我这个 代码是实现 根据生日判断星座
  16. html图片要存在哪里,将html中的图片和html保存在一个文件里
  17. centos安装MySQL怎么换端口_centos安装mysql后3306端口不通
  18. 5个优质开玩笑代码脚本
  19. 翰林学院python_为什么入门大数据选择Python而不是Java?
  20. jQuery 实现音乐导航案例

热门文章

  1. perform build_lc_system_stat
  2. S/4HANA Product master OData
  3. ui5 resource file 404 error
  4. JS Event handler example - event capture and bubble
  5. ABAP Netweaver上调用Java程序
  6. 利用php-console和Chrome开发者工具实现PHP应用的printf
  7. SAP CRM one order Appointment table
  8. Step by Step to download a material from ERP via request download
  9. Mockito框架学习之stub then return
  10. 推荐一个包含大量PDF编程电子书的github仓库