对于想学单片机的小伙伴们来说,总会有一个问题萦绕在心间。就是我学习51好呢!还是学习stm32好呢!接下来就这个问题我发表一下我的个人观点。
51单片机是我们大学时代都会接触的一款单片机,它是inter公司在上世纪推出的一款高端 8 位单片机,也就是我们常说的 8051 。但是不是所有的51都是真的51,这是什么意思呢?我们常说的8051其实不一定就是inter公司的 8051,而是泛指8051系列中的基础结构是inter的8051的内核,也就是说有些公司会用inter的8051内核结构对外设增加或减少来封装自己的单片机,可能会取其他的产品名称,但他的内核架构依然是inter的8051内核。所以我们统称凡是应用inter的8051内核的单片机都叫51单片机。可以这样说,8051 在 8 位机领域就是一个代表的存在。
在学习8051单片机(以下简称51单片机)时一般都是先学习如何通过配置寄存器点亮LED小灯,然后再去学习一些复杂的特殊动能寄存器的配置、最小系统、中断、定时器、计数器、通讯接口(UART、IIC、SPI)的实现等。相对来说比较简单,之所以说简单是相对的。因为51单片机基本都是 8 位寄存器,且寄存器就几十个,操作起来不会太让人恼火。
但STM32就不同了,STM32是意法半导体生产的芯片,在这不用芯片或SOC(system on chip片上系统)来称呼它,是因为STM32在功能上开发难度上与51单片机就不再是一个量级的,且开发方式也有很大不同。STM32一般都是采用ARM的内核。且它的时钟不再像51那么简单,而是由一整套的系统时钟构成。引脚也会比51单片机多,寄存器的位数一般都是 32 位的,且寄存器由成百上千个寄存器。当然方方面面的多也会带来方方面面功能的强大,一般STM32都能跑一个 实时操作系统。而且STM32 的开发不再像51单片机那样使开发人员花大量时间去一个一个的配置寄存器,而是由供货商提供的成型库函数供用户调用,开发效率也大大提高。如果没有库函数,开发STM32简直就会是一种炼狱。虽然供货商提供了方便的库函数,但我们还是必须要理解单片机的工作原理,只有这样才能为我们的开发带来质的飞越。
所以说在学习单片机方面来说没有学习这个好,学习那个不好得说法。如果想把单片机学好,最好是从51单片机入手,从最基本的配置寄存器开始,把所有的基本原理都理解了,学透了。再去入手STM32就会很容易上手。如果直接上手STM32,会让人感觉很不踏实,容易蒙圈。因为STM32的寄存器位数多,个数多,真配一圈下来人就疯了。但是光知道调用一个库函数就能实现某某功能,具体怎么回事儿,其中的原理不是很清楚,对技术把握会不牢固,容易打击学习信心。
学了STM32就可以考虑学习ARM中A系列的处理器了,因为STM32大部分还是ARM中R系列的内核,A系列的相对功能更加强大,再配上Linux操作系统的加持,就会让我们离大牛更近一步,在当今的时代可以说在嵌入式技术领域算是进阶到高阶领域,否则只停留在51或STM32层次只能说是嵌入式的基础开发,只能去仰望那些大牛。