学32位MCU需要有51单片机基础吗?

学32位MCU需要有51单片机基础吗?

本文将从技术差异、开发环境、学习难度和市场就业这四方面对比32位MCU与51单片机。先学哪一个,看似是一个选择题,但二者并不冲突,最好全面掌握。正所谓技多不压身,学的技术越多,选择就越多,越灵活。但如果时间有限,精力有限,那就需要评估效率,找到最优解。

学32位MCU需要有51单片机基础吗?这个大问题可以分解为三个小问题。

  1. 只会51单片机是不是落后了?
  2. 32位MCU能不能零基础入门?
  3. 先学51单片机,再学32位MCU会更容易吗?

在回答这三个问题之前,我们必须先全面了解32位MCU和51单片机的现状,并从各项指标的对比中来寻找答案。

技术差异

技术参数 8051单片机 32位MCU
性能 8位8051内核,1970年代(不再更新) 32位ARM内核(Cortex-M系列持续更新)
主频 8~35MHz 72~550MHz
内存 2KB~128KB 32KB~2M
核心功能 2~5个定时器、固定的外部中断引脚,内置ADC。由于片上外设少,大量功能需要使用IO接口模拟 5~13个高级定时器,所有IO可作为外部中断,内置ADC,DAC和DMA,RTC时钟,JTAG调试接口,内置CAN以太网接口,SDIO接口,USB接口,IIC接口,SPI接口

并不是说32位MCU就比51单片机高级,51单片机完全可以胜任一些简单的开发任务。就算智能手机再好,对于老年人来说,功能机就已经足够使用了。所以,在多种多样的需求面前,不是性能决定一切。但从速度、内存和片上外设来看,51单片机的性能是没有提升空间的,无法做高级应用。而32位MCU的性能可上可下。就像智能手机既有功能机的打电话、发短信功能,又有摄影、录像、WiFi和蓝牙等高级功能。

开发环境

工具 8051单片机 32位MCU
编程语言 汇编/C语言 C语言/MicroPython
调试工具 第三方51仿真器 DAP-LINK/ST-LINK等官方仿真器
开发环境 KEIL C51 KEIL/IAR/CubeIDE
图形化编程 CubeMX等
RTOS系统 由于内存小,可用系统少 FreeRTOS/RT-Thread

从开发工具方面来看,51单片机显得很简陋。正由于它简陋,涉及的技术少,所以初学者觉得更容易上手。32位MCU涉及的工具很多,入门要学很多东西,初学者难免产生畏惧。一旦掌握了一些高效开发工具的用法,会极大提升开发效率。功能机上手快,小朋友几天就能玩明白。而成年人也难以掌握智能手机的全部功能,但却能凭借智能手机打开新世界的大门。

学习难度

学习 8051单片机 32位MCU
参考示例 很多 很多
教程数量 多(大多距今多年) 多(不同时期都有很多)
学习难度 入门容易,提升困难 寄存器难,库API中等,RTOS难

对于理解能力强的同学,直接学32位MCU并不算太困难。

市场角度

市场 8051单片机 32位MCU
应用领域 工业控制/家电/机电/自动化 智能硬件/物联网/汽车/手机
市占率 非常高(各有细分市场) 非常高(各有细分市场)
发展趋势 呈淘汰状态(仅剩传统行业) 呈发展上升状态(顺应产业升级)
价格 非常低(适合功能少的应用) 适中(对标51的有STM8等)

由于51单片机性能有限,只能在传统的工业控制等领域徘徊,已经不适应当下的物联网等新领域。但是51单片机在传统领域当中还是有相当的优势和低位。在嵌入式行业,任何一款单片机都有它生存的空间。

就业前景

从开发者就业的角度来看,32位MCU算是新兴行业,它的工资更高,未来的发展空间也会更多一些。但是,由于32位MCU现在已经平民化、普及化,掌握32位MCU的人越来越多,就业上也是竞争激烈。在之前学习51单片机的人,转行做32位MCU可以找到不错的工作,但以后会越来越难。但是从另一个层面也可以看出,嵌入式行业整体在做技术升级和产业升级,对开发者的技能要求也越来越高了。这并不是一件坏事,但越来越卷也是一定的,需要付出更多的努力和学习时间。

明确结论

下面就来回答一下上面提到的三个小问题。

1. 只会51单片机是不是落后了?

如果读者已经是长期从事自动化、普通家电和工业控制等领域的老工程师,那么只会51单片机就还不算落后。如果读者想做技术升级,想从事物联网、智能硬件、汽车电子和手机电子周边产品等的开发,那么只会51单片机就是落后了。

2. 32位MCU能不能零基础入门?

这需要根据读者的基础来确定。如果读者年龄较大,思维方式还是从功能机过渡到智能手机,那么用51单片机的思维方式还是很难入门32位MCU。如果读者的年龄较小,从小就接触智能手机,那么先天就具有智能手机的思维方式,那么就可以直接从32位单片机入门。

3. 先学51单片机,再学32位MCU会更容易吗?

这个问题的潜台词是:51单片机只是为了更好地学习32位MCU的过渡产品。如果最终的目的是学习32位MCU的话,那么可以先试试从STM32入门。

如果能顺利学习,那么就直接继续深入,想回头再学51单片机也会很简单,甚至在需要用到的时候再去学习也来得及。

如果从STM32入门失败,有大量内容无法理解,那么可以先放弃32位单片机,转从51单片机入门,但是51单片机不需要太深入学习,只要掌握编写流水灯、数码管和简单的电机控制就可以了。达到这个水平就可以转到32位单片机来得到更大的发挥空间。

32位单片机难学的本质

所谓的32位单片机难学,这个问题的本质是对C语言的理解不够透彻。无论是学习51单片机还是学习32位MCU,本质上都是向着两个目标而努力,一是学会单片机硬件电路设计原理,而是学会C语言编程的逻辑和技巧。

上一篇:强化学习与深度强化学习:深入解析与代码实现


下一篇:十二、结构型(代理模式)