由于原文章只介绍了51单片机(当时STM32刚刚兴起)的学习路线,与目前流行的STM32等高端单片机相比显得有些落后,所以作者更新了这篇文章。
1、51和STM32的区别。
STM32比51有更高的主频、更大的RAM、更大的FLASH,所以STM32可以处理更多的事情。
STM32比51有更多的外设,比如CAN、USB、FSMC等,可以为你节省一些芯片。
STM32有固件库,写代码不再需要看手册、查寄存器。 网上也有很多套路。
诸多优点使得STM32成为流行且主流的微控制器,因此有必要从51过渡到STM32时代。
2.核心与外围设备。
外设是外部设备,如GPIO、ADC、IIC、UART、SPI等。
内核是内部核心,如ALU算术逻辑单元、流水线、指令集等。
51的核心还是叫51。STM32的核心包括Cortex M0、M0+、M3、M4、M7等。
由于ARM Cortex系列芯片分为高端A系列、中端R系列、低端M系列,所以STM32有多个核心。
3.如何从51过渡到STM32?
虽然51有这么多缺点,但成本低仍然是它的优点。 一次OTP(一次性编程)的价格低至0.3毛钱,适合多种家用电器。
因此,不能因为纯粹的技术崇拜就认为51毫无用处。 然而,我们需要掌握更多的技术来适应不同的工作环境。
由于您正在从51过渡到STM32,因此您不应该在51停留太久。 一旦掌握了基本的定时器和串口,就可以转用STM32了。
有些学校先教汇编,再教C,但我认为先学C,再学汇编更好。 由于汇编枯燥且难学,人们在使用之前对微控制器的兴趣已经降低了一半以上。 正如 Linus 所说,你必须先学会使用它。
1.首先掌握C语言语法。
微控制器使用的C语言称为C51。 除了标准的C语法外,C51还专门添加了一些针对单片机的语法。 没有什么大的区别。 那我们就可以安装一个VS(别用VC6.0的过时的IDE啦)然后,找一本语法书抄代码,模仿写,做课后练习,不用看书。 其中,流程控制(包括if、for、while、switch等)以及指针和结构体需要掌握。 。 推荐观看视频《用C语言学习》。
2.一点练习。
接下来可以买一块单片机开发板来做一些小玩意(56块钱买一块开发板就行了,不用浪费太多钱),比如:摇杆、光立方、密码锁、超声波测距、红外遥控等(论坛里可以找到很多新奇有趣的小玩意)。 当然,我们不需要每一项都做。 我们可以选择一些比较不同的去做,这样升级会更快。 推荐视频《十天学单片机》,还可以观看开发板附带的视频,以及教材《单片机C语言编程训练100个实例——基于8051+Proteus仿真》。 适当做几个就可以了,不要在这个阶段停留太久,重点掌握定时器和串口。
3. 养成良好的编码习惯。
《十天学单片机》里面会有很多烂代码,但是我们不可能一下子就写出优秀的代码,一定有一个过渡期,所以建议大家先看一下郭大侠的视频。 那么如何编写高效且可读的代码呢? 这里需要提一下:不要使用拼音来命名变量或函数,例如 int shi、fen、miao; 这些都是不好的编码习惯,必须用英文命名。 推荐的做法是参考高手写的代码。 在百度文库或者各大电子论坛中可以看到很多优秀的代码。 另外推荐《从单片机初学者到单片机工程师》、《MISRA C标准工程师笔记》、《C语言编程规范》、《C51代码风格》。
4.了解汇编语言。
微控制器工程师也被称为固件工程师,因为他们写的代码都是和寄存器打交道的,而寄存器可以直接控制硬件。 软件位于最底层,不需要经常更改,因此称为固件。 这部分要求数字和模拟电子学的基础知识易于理解,因此在大学中,首先教授数字和模拟电子学,然后教授微控制器。 现在如果你想用汇编语言来玩单片机,你会发现汇编更加困难。 编写的代码可读性差、可移植性差、难以维护。 然而汇编可以让你清楚地感受到单片机是如何工作的,并且了解C语言指针的原理。 不过,我们不需要深究汇编语言,我们只需要了解,比如精确的延迟。
1.编译、编辑、版本控制。
由于STM32固件库中的函数名和变量名都很长,我们不可能一一输入,这需要借助高级工具。
1. 编译器。 仍然使用keil来编译代码。
2.编辑。 编辑器是编写代码的工具。 由于Keil的代码补全和提示很差,需要使用其他工具来编写代码。 这就需要打开两个软件,一个用来写代码,一个用来编译代码。 虽然这有点麻烦,但与输入一长串函数名相比,这不算什么。 推荐使用VS和Eclipse(C/C++版本)。 不建议使用source Insight(功能不够强大)。
3.版本控制器。 这个东西是用来备份代码的,不要再用压缩包了。 推荐git教程。
2.了解固件库。
经过上一步的准备工作,首先购买一块带模拟器的STM32开发板,248元。 这里下载的代码不像51中那样可以使用串口下载。 你必须使用另一个模拟器。
这里的模拟器有ST link、Ulink等,不推荐使用J link。 仿真器的接口包括JTAG和SWD。 建议使用SWD,只需连接3根线。
推荐的教材是《STM32开发指南库函数教程》,也可以观看开发板附带的视频。 这里需要掌握STM32的外设,如:ADC、RTC、CAN、IIC、SPI、UART、DMA、SDIO、IAP等。
3.自制PCB。
如果你的数字和模拟电子学基础较差,你需要先补充一些理论。 然后下载一个Altium Designer6.9并观看“Altium Designer视频教程”。 根据自己感兴趣的小玩意做一个PCB,图纸完成后,我先发给群里指导,然后发给嘉力创打样。 很便宜,其他材料都是在淘宝上买的。 主要掌握焊接、维修、原理图、PCB等基本技能,可以自己掌握。
4. 微控制器之外的世界。
即使你现在可以玩单片机,也只是打开了一个小窗口。 您可以选择下面的一个方向,但您可以在工作中使用多个方向的知识。 无论如何,尽可能多地学习。
1.嵌入式操作系统。 不建议使用51单片机来运行系统。 STM32可以运行ucos II、ucos III、free RTOS、coos、RT-Thread、RTX等,建议学习ucos II。 教材是任哲的《嵌入式实时操作系统ucos II原理与应用》。 只要掌握了一种嵌入式操作系统,其他一切都可以触类旁通。 移植系统时,使用汇编。 建议学习免费的RTOS或者RT-Thread。
2.ucgui/STemwin,触摸GFX。 STM32可以通过FSMC接口驱动TFT液晶屏。 这里使用的是图形界面库。 你可以学习STemwin。 STemwin实际上是ucgui。 我们推荐《STemwin开发手册》,也可以学习Touch GFX。
3. 主机。 使用微控制器收集信号并将其发送到 PC。 PC需要一个主机来控制微控制器。 该主机可以用 Labview、C++、C、JAVA 甚至 HTML5 编写。 最常用的一种是微控制器和PC之间的串行通信。 推荐使用C或者QT来编写上位机。 虽然很多公司都使用MFC(C++库),但是入门比较困难,不建议学习MFC。 推荐教材有《C#经典入门》和《QT入门》。
4.数据结构和算法。 推荐教材为周航慈的《嵌入式系统软件常用算法》和《数据结构课件》。
5、接口应用。 微控制器内部资源相对较少,经常需要连接一些外部芯片和传感器。 这需要模拟电子学、电子测量、计算机网络等知识。推荐的教材是陈尚松等人的《电子测量与仪器》。 以及谢希仁的《计算机网络》。 另外,还会用到一些通信模块,比如Zigbee、WIFI、蓝牙、NB-IOT、433模块、NRF24L01、RFID智能卡等,有兴趣的话可以尝试一下。 这些都是比较实用的技术。
5、其他问题。
1、单片机的代码是如何运行的?
建议阅读《计算机组成原理》。
2.FPGA。
可以参考本博客的《如何学习FPGA》。
3.嵌入式。
很多电子专业的学生都觉得嵌入式很难。 这是因为嵌入式涉及到很多计算机领域的知识,而这些知识很多是电子专业所没有的。 如果基本功没过,肯定很难学。 具体学习路线请参考本博客“如何学习嵌入式软件”。
4、硬件设计。
您可以参考本博客的《如何学习硬件设计-理论》和《如何学习硬件设计-实践》。
5、开发板的选择。
这里推荐的开发板都是完整的板子(上面的链接不是广告,只是一些实在不知道如何选择开发板的人给出的),而且里面有很多芯片。 不建议使用接口较多的核心板。 每个接口都需要购买单独的小板。 这种主板称为子主板。 一块主板不贵,但是子板很多。 购买多个会花费很多钱,而且子板很小,容易丢失。
6. 为什么学生很难制定计划?
因为学生积累不多,思考问题不多,很多知识不懂,很难制定计划。 这个时候,你需要接触更多的新事物。 只要积累多了,自然就能想出方案来。 别太不耐烦了。
7.MDK。
Keil有51版本和ARM版本。 Keil 的 ARM 版本也称为 MDK。
8.stm32立方体。
cubemx可以自动生成配置代码。 虽然很方便,但不建议初学者使用。 它会让你懒得写代码。
9、为什么编译时没有问题,但下载到单片机时却没有问题?
如果编译没有问题,说明语法没有问题,但并不代表逻辑和功能正确。
10. 网上有这么多可以复制粘贴的代码,为什么还要自己写代码?
因为网上能找到的代码有很多,但网上找不到的代码就更多了。
11.Proteus和multisim仿真。
Proteus非常适合模拟单片机,但模拟效果无法代替实物,一切以实物为准。
Multisim适合在学习模拟电子学时进行仿真,帮助理解电路。
12、为什么有些STM32开发板可以使用串口下载代码? 他们还需要模拟器吗?
STM32具有IAP功能(也称为远程升级),可以使用任何接口下载代码。 不过,这种方法只有在芯片本身有IAP代码的情况下才能使用。
在没有任何代码的芯片上,无法使用串口下载代码。 在这种情况下,必须使用模拟器。
13、单片机不就是C语言吗? 我还需要学习单片机原理吗?
在工程中,会遇到单片机内部资源的调度、IO口的电气特性、带宽等问题。 如果不了解单片机的原理,就无法解决这些问题。
14、单片机和微机原理汇编。
微机原理讲的是x86架构在PC中的组装,与51单片机的组装不同。 不要读错书。
51单片机的组装和STM32的组装也不同。 51采用CISC架构,而STM32采用RISC架构。
15、STM32以外的高端单片机品牌。
有NXP的LPC、Nuvoton、GD32(高仿STM32)、英飞凌、TI的MSP430、Microchip的PIC、瑞萨、ADI、美信(Maxim)、三星等。
16.其他微控制器品牌。
和泰、辉芒、松瀚、海尔(东软)、STC、义隆、鑫茂、中盈、ABOV(现代)、Megawin(圣泉)、盛思威、HOLTEK(盛阳)、久奇、友华、岭东威。
—————————————————