本来想的是认认真真地做一部ARM内核的MCU教程和文档,这个入口最好的芯片切入口就是STM32。然而最不凑巧的是,现在STM32无论哪一个型号都是一“芯”难求。以至于我Layout好的开发套件资料,又被藏进了硬盘的最深处。寻寻觅觅了好久,我每天一有时间就在网上寻找各种适合学习的芯片,其中不乏有iMxRT系列,GD32系列等等主流的M4内核芯片。经过长期的寻觅,我发现现有的这些ARM-Cortex M芯片大致可以分成两类,第一类是存在了很长时间的一线大厂的芯片,如iMXRT,LPC,ATSAMS等,这一类芯片是长期独立于STM32这种体系存在的,因此开发流程和库函数等和STM32大相径庭,但是考虑到性价比完全比不上涨价之前的意法半导体同价格产品,因此暂时弃之;另一类是意法半导体涨价之前就已经存在,涨价之后由幕后走向台前的类“STM32”芯片,这一类芯片除了将STM32换成了GD32,HK32之外,其余的基本都和STM32 Pin to pin兼容,软件开发也与STM32大同小异。这里补充一点,如果等我们这个“朝花夕拾”系列做完,STM32价格还是这么高,我就真的使用GD32来讲解了。

 

图1 “琳琅满目”的XX32

 

由上述内容可以看出,STM32的涨价对于我最早的规划来说,其实是有很大影响的,就在我苦苦寻找之际,有天上午,我本来要搜索意法半导体(ST)的,结果手抖了多打了一个C,紧接着,一个熟悉的网站映入眼帘。“要不做一期51单片机吧”一个念头从我脑中闪过。当然,这个51单片机并不是我们很早之前熟悉的那款,而是51单片机的魔改版或者说增强版,那么,这个到底是什么单片机呢?当然还是51单片机。

 

图2 不解释

 

其实我做增强型51单片机教程的决定,并不是那么随意的做出的。我前面早就说过,单片机终究是单片机,一块可以被我们使用的芯片而已。那么我们选用它的原因无非就是性价比,就比如我们使用的这个芯片STC8A8K64S2A12,它是一款内置24MHz高速晶振,有4个串口,5个定时器,12位15通道的ADC,IIC和SPI等外设,8KB SRAM和64K flash的1T超高速51单片机。最重要的是,它的价格才4元左右(现在价格小批量涨到了7元左右)。可能有些读者印象中的51单片机外设还是那种带着74HC573和八段数码管动态扫描的老掉牙的算法,在这个增强型的8位内核的单片机上,扩展一些如SPI LCD,RTC,FLASH甚至是WIFI模组完全没有任何问题,因此我首先将开发板设计成了一个可以远程操作和远程控制的产品,因为以后我们的编程工作中,网络内容肯定会接触地越来越频繁。

 

图3 增强型51单片机资源

 

然而,我最焦虑的一个问题就是,51单片机的开发语言C51和标准的C语言是不一样的,内部用了很多关键词,如只能用sfr定义的一些特殊功能寄存器等。如果使用C51写程序,确实在移植的时候会有很多地方需要修改。因此,我又自己仿造STM32固件库写了一个51单片机的固件库,目的是将C51的关键词减到最少,或者只将其限制在程序的最底层。

 

图4 51单片机固件库调试

 

这个“增强型51单片机教程”被我归类到了“朝花夕拾”系列,为什么以“朝花夕拾”命名呢?回顾我第一次接触单片机到现在已有将近15年,在这15年间的前4年是学校生涯,在这4年的“朝阳时光”里,我自学了51,AVR,MSP430,STM32等单片机,这些单片机的学习对我的工作技能其实是有很大帮助的,但是不得不承认,对于它们的学习,只不过走马观花,并没有一个深入的研究。因此希望借助这一套系列教程,再来审视一下这些“大清早的花朵”。

 

最后,我觉得这一套视频教程适合两类人群,一类是零基础的初学者,增强型51单片机有着51单片机传统的简单,因此特别容易上手;第二类人群是具有基础的同学,再回来看一下51单片机,你一定会有提升的。

 

《乐创C语言讲义》很成功,这也离不开大家的支持,我也会继续推出优秀的作品,一如既往地服务大家。