首页天道酬勤,

,

张世龙 05-13 01:39 9次浏览

--------- -前言---------------------------------------------------------。

由于原文只介绍了51单片机的学习途径(当时STM32刚刚兴起),比目前流行的STM32等高端单片机稍晚,笔者更新了此文。

一、51和STM32的区别。

如果STM32比51频率高、RAM大、FLASH大,则STM32往往能够处理。

STM32的外围设备比CAN、USB、FSMC等51多,所以可以节约芯片。

STM32有一个固件库,不需要看手册、查寄存器写代码,网上也有很多例程。

许多优势使STM32大众化,成为主流的单片机,必须从51进入STM32时代。

二、内核与外设。

外围设备是指GPIO、ADC、IIC、UART、SPI等外部设备。

内核是内部核心,如ALU算术逻辑单元、流水线、指令集等。

51个内核仍被称为51个。 STM32的核心包括Cortex M0、M0、M3、M4、M7等。

由于ARM Cortex系列芯片分为高端a系列、中端r系列和低端m系列,因此STM32有几个核心。

三、如何从51过渡到STM32?

51有那么多不好的事情,但低成本仍然是它的优势。 一枚一次性编程(OTP )的51很低,只有0.3毛,适用于很多家电产品。

所以,单纯的技术崇拜不能把51贬到任何地方。 但是,为了应对各种工作环境,需要掌握更多的技术。

既然从51迁移到STM32,我在51停留的时间就不太长了。 掌握基本计时器、串行端口后,即可迁移到STM32。

--------51篇------------------------------------------- -。

有些学校先教汇编,再教c,但我认为先学c再去汇编比较好。 因为汇编很无聊,很难学习,所以单片机还是没用,兴趣减半。 就像linus的话一样,你必须首先学会使用它。

一、首先掌握C语言语法

单片机使用的c语言叫C51。 C51除了标准的c语法外,还特意在单片机上添加了一些语法,没有太大的区别。 那么,VS(请不要再使用VC6.0的旧IDE了。 (然后随便找语法书抄代码,模仿写,不看书做课后习题就行了。 推荐观看视频《边用边学C语言》。

二.量的实践

其次,你可以买单片机开发板做小东西。 例如,您可以在论坛上找到许多新奇有趣的小东西,包括摇杆、光立方、密码锁、超声波测距和红外遥控器。 当然,你不需要做一切。 我们可以选择差异很大的东西来做。 那样的话升级会更快。 推荐视频《十天学会单片机》。 也可以看开发板配套的视频、教材《单片机c语言程序设计实训100例——基于8051+proteus仿真》。 随便做几个就行了。 请不要在这个阶段停留太久,重点掌握计时器和串行端口。

三.养成良好的编码习惯

《十天学会单片机》会出现很多不太好的代码,但是我们不能很快写好代码,必须有过渡期,所以我们建议你先看zddfbx的视频。 那么,如何编写高效、可读的代码呢? 在此仅提及一点,不要用拼音来命名变量或者函数名,int shi,fen,miao; 这些都是不良的编码习惯,都必须用英语命名。 推荐的做法是参考很多大神们写的代码。 在百度文库和各电子论坛上可以看到很多优秀的代码。 此外,建议使用《从单片机初学者迈向单片机工程师》、《MISRA C标准工程师笔记》、《C语言编程规范》、《C51代码风格》和0103010。

四.了解汇编语言

单片机工程师也被称为固件工程师。 他们写的代码都是与寄存器交互的,但寄存器可以直接控制硬件,是底层软件,而且不需要频繁更改,所以被称为固件。 这部分需要了解数字电、模拟电的基础,所以大学先教数字电、模拟电,再教单片机。 现在,用汇编语言玩单片机,你会发现汇编很麻烦,编写的代码可读性差,可移植性差,很难维护,但是汇编是单片机如何工作的,编写的代码但是,我们不需要研究汇编语言,我们需要知道。 例如,精

准的延时。

 

                                                           --------- STM32篇 ---------

一、编译、编辑、版本控制器。

      由于STM32的固件库中,函数名、变量名都是很长,我们不可能逐一输入,这就需要用到先进的工具。

1、编译器。仍然使用keil编译代码。

2、编辑器。编辑器就是写代码的工具,因为keil的代码补全、提示都很差,所以要用其它工具来写代码。这就得开两个软件,一个写代码,一个编译代码。虽然这样有点麻烦,但是相对于输入那一大串函数名来比,不算什么。推荐VSEclipse(C/C++版本)。不推荐使用source insight(功能不够强大)。

3、版本控制器。这个东西就是用来备份代码的,不要再用压缩包了。推荐git教程

二、学会固件库。

      有了上一步的准备工作之后,先买一块STM32开发板,带仿真器,248元。这里下载代码可不像51那些,用串口就能下载的了,得另外用一个仿真器。

这里的仿真器有ST link、Ulink等,不推荐使用J link。而仿真器的接口有JTAG和SWD,推荐使用SWD,接3根线就可以了。

推荐教材《STM32开发指南库函数教程》,也可以看开发板配套的视频。这里要掌握STM32的外设,如:ADC、RTC、CAN、IIC、SPI、UART、DMA、SDIO、IAP等。

三、自制PCB

      数电、模电基础差的,需要先补充点理论再来。然后下载一个Altium Designer6.9,看《Altium Designer视频教程》。根据自己感兴趣的小玩意来做一块PCB。画好之后先发到群里,让大家指导一下,然后再发到嘉立创打样,很便宜的,而其它材料则到淘宝上买。主要掌握焊接、维修、原理图、PCB等基本功,自己多动手就能掌握的。

四、单片机外面的世界

      就算你现在能玩转单片机,但也只是打开了一扇小小的窗户而已,下面你可以选一个方向,但是工作中可以会用到几个方向的知识,反正尽量多学点。

1、嵌入式操作系统。不推荐用51单片机跑系统。而STM32可以跑ucos II、ucos III、free RTOS、coos、RT-ThreadRTX等。推荐学ucos II,教材是sddhk的《嵌入式实时操作系统ucosII原理及应用》,只要掌握一种嵌入式操作系统,其它都可以触类旁通。移植系统时,会用到汇编。推荐学习free RTOS或者RT-Thread。

2、ucgui/STemwin、Touch GFX。STM32可以通过FSMC接口来驱动TFT LCD屏,这里要用到图形界面库,可以学STemwin,STemwin其实就是ucgui,推荐《STemwin开发手册》,也可以学习Touch GFX

3、上位机。使用单片机采集信号送到PC机上,而PC机需要一个上位机来控制单片机,这个上位机可以用Labview、C++、C#、JAVA、甚至是HTML5来写。其中最常用的是单片机跟PC机的串口通信,上位机建议用C#或者QT来写,尽管还有很多企业用MFC(C++库),但是上手比较难,不推荐学MFC。推荐的教材是《C#入门经典》、《QT简介》。

4、数据结构和算法。推荐的教材是落后的机器猫的《嵌入式系统软件中的常用算法》、《数据结构课件》。

5、接口应用。单片机的内部资源比较少,很多时候需要外接一些芯片、传感器。这里需要到用模电、电子测量、计算机网络等知识。推荐的教材是kldmb等著的《电子测量与仪器》和ygdhk的《计算机网络》。此外,还会用到一些通信模块,比如Zigbee、WIFI、蓝牙、NB-IOT、433模块、NRF24L01、RFID智能卡等,有兴趣可以弄一下,这些都是比较实用的技术。

五、其它问题。

1、单片机的代码是如何运行的?

推荐看《计算机组成原理》。

2、FPGA。

可以参考本博客的《如何学习FPGA》。

3、嵌入式。

很多电子专业的学生就感觉嵌入式很难,那是因为嵌入式涉及很多计算机领域的知识,而这些知识很多是电子专业不开课的,基本功没过关,学起来肯定吃力。具体的学习路线可以参考本博客的《如何学习嵌入式软件》。

4、硬件设计。

可以参考本博客的《如何学习硬件设计——理论篇》、《如何学习硬件设计——实践篇》。

5、开发板的选择。

这里推荐的开发板都是一整板(上面的链接并非广告,只是确实有人不会选开发板才给出来的),里面有很多芯片的。不推荐一个核心板留了很多接口,每个接口都要另外买一块小板,这种板叫子母板,一个母板不贵,但是子板很多,买多几块就花很多钱,而且子板很小,容易丢。

6、为什么学生很难定方案?

因为学生积累的东西并不多,考虑的不那么周全,很多知识似懂非懂,难以制订方案。这时要多接触新事物,只要积累的多,就自然而然的能出方案了,不用太急躁。

7、MDK。

Keil有51版本和ARM版本,其中ARM版本的Keil又称为MDK。

8、stm32 cubemx。

cubemx可以自动生成配置代码,虽然很方便,但不建议初学者使用,会让你懒得不想写代码。

9、为什么编译没问题,下载到单片机却不对?

编译没问题,说明语法没问题,但不能表明逻辑、功能是正确的。

10、为什么网上都有那么多代码可以复制粘贴,还要自己写代码?

因为网上能找到的代码很多,而网上找不到的代码却更多。

11、proteus及multisim仿真。

proteus很适合仿真单片机,但是仿真的效果不能替代实物,一切以实物为准。

multisim适合在学模电时,做一下仿真,以帮助理解电路。

12、为什么有的STM32开发板可以用串口下载代码,还需要仿真器吗?

STM32有个IAP的功能(又称为远程升级),可以用任意的接口来下载代码,但是这种方法是建立在芯片本身有IAP的代码,才可以使用。

在一个没有任何代码的芯片上,不能使用串口下载代码,这时,必须使用仿真器。

13、单片机不就是C语言嘛,还需要学单片机原理?

在工程上会遇到单片机内部资源的调度、IO口的电气特性、带宽等问题,你不懂单片机原理是解决不了这些问题的。

14、单片机的汇编和微机原理的汇编。

微机原理讲的是PC机中x86架构的汇编,和51单片机的汇编是有区别的。不要看错书。

而51单片机的汇编和STM32的汇编也是有区别的,51的是CISC架构,而STM32的是RISC架构。

15、除STM32以外的高端单片机品牌。

有NXP的LPC、新唐、GD32(高仿STM32)、英飞凌、TI的MSP430、Microchip的PIC、瑞萨、ADI、Maxim(美信)、三星。

16、其它单片机品牌。

合泰、辉芒、松瀚、海尔(东软)、STC、义隆、新茂、中颖、ABOV(现代)、Megawin(笙泉)、晟矽微、HOLTEK(盛扬)、九齐、佑华、灵动微。

 

, ,