前言

前两天,在群里看到一群朋友在讨论STM32的学习。 另外,之前也有机械专业的准研究生在问STM32的入门问题。 正好我也有点经验,所以试着分享一下这个话题。 我不是什么了不起的神,我只是个工程师。 以下是我的一点经验和看法。 希望对一些初学者朋友有帮助,以供参考。 旧鸟会跳过去~

我知道

找资料

,但是我看过一个问题,学STM32买什么书,看什么书。 STM32编程作为一种高技能,必须具备多少技能? 初学者的话,我想暂时不买书籍。 首先考虑拿到STM32开发板,然后按照开发板的教程进行操作。

几年前,有很多家在做STM32教程:

(-编程之家

目前,市场上仍受欢迎的只有前4家公司。 从这四家公司中选一家买开发板。 正好这四个教程基本上都学过一次,我就简单介绍一下各自的特点:

1、正点原子

(-编程之家

正点原子教程特点关键词:手把手、教程对初学者友好。 51转来转去,觉得自己基础不好的人可以选择本教程。 我以前也入门的是看温婉的懒猪视频进去的门。 缺点是代码的编码风格不太好。 我现在很少看到他们的代码。 因为不舒服~

2、野火

(-编程之家

野火特征的关键词:零死角。 野火教程很好。 适合反复阅读。 我在STM32的教程中看到的最多的是野火。 我觉得不管现在用什么教程,最终都有必要再看一遍野火教程。 野火教程有很多知识点分析得很透彻,真的叫零死角。 mgddm的书中有一句话,说基础不牢固,地动山摇。 和你学习~

3、yydlz

(-编程之家

yydlz教程的特色关键词:喂鱼。 yydlz的教程是我工作后仔细看的。 教程在详细分析知识点的同时,还教我们如何学习。 其实我第一次接触STM32是用yydlz的教程,但是那个时候看yydlz的代码很痛苦。 我当时不知道为什么那些变量命名得那么华丽,所以没有用那些教程。 后来有了一点基础我才意识到我错了。 这是多么规范的代码啊! yydlz教程是奢侈品中的奢侈品,适合高级。

我觉得yydlz的教程和野火教程几乎没什么区别,让我选也选不出来。 孩子选择的话,我们大人都可以学习。 但是,关于代码样式和框架,yydlz的代码样式与实际项目最接近。 我最初工作的公司的代码风格基本上继承了yydlz的代码风格,舒适而整齐。

(-编程之家

看了这个工程感觉好吗? 除此之外,yydlz还非常注意一些调试技巧,比如基本挖掘了Jlink的各种调试手段(可以看看那些专题教程,很吃香)。

正点原子有温顺的小猪,野火有mgddm,这些都是大人物级的人物(出书狂魔、出教程狂魔)。 ydl

z也有这样重量级人物:硬汉哥。硬汉哥对技术的追求精神很值得我们学习(技术深度+广度),特别是那一期期yydlz周报,给我们分享了很多新东西、新技术,可以去围观它们的号【yydlz电子】。除此之外,硬汉嵌入式论坛由他坐镇,基本上都是有问必答,并且回答很有耐心,大赞。

这里介绍yydlz的篇幅最长,是想让大家多多认识一下yydlz,因为作为STM32教程的三巨头之一(就我了解目前做STM32教程最火、用户比较多的就只有:正点原子、野火、yydlz这三家。不知道还有没有其它我不知道的,所以这里暂且称它们为STM32教程三巨头),yydlz的用户好像较前两家少很多。好的教程应该是要让更多的人看到的,让更多的人支持,这样这些大佬才有能量创造更多的教程来供我们学习。上面那张图列举了那么多教程,其实有些还是挺不错的,不知道为什么现在基本都没听说了,比如:

众想科技,当时我觉得那应该是从51转到STM32最好的入门资料,教程的编码习惯跟我们学51时的编程习惯差不多,关键是那位老师现场敲代码,一个一个字母地敲,包括STM32的固件库函数,当时MDK还没有补齐功能。。当时很是佩服。以为它会发展得很好,但是现在基本上都没听说过众想科技了。(估计是它的教程收费的原因,基础教程免费,提高教程收费)

4、普中科技

普中科技特点:开发板便宜、开发板便宜、开发板便宜。实在买不起上面三家的开发板的可以选择这个。一百八还带屏幕,太香了。我大学时买了一块,现在还有留着。其它没啥说的,它有的上面三家都有。

5、其它

这里顺便介绍一个B站的教程:

https://space.bilibili.com/203095676/

这是温婉的夕阳的B站视频教程,目前有几个专栏:STM32入门编程、RT-Thread、硬件电路讲解、大杂烩。

(-编程之家

(-编程之家

(-编程之家

(-编程之家

感兴趣的朋友可以去围观学习。

6、总结

几个教程的特点:

正点原子、野火:用户较多,论坛热闹。yydlz:代码规范、代码框架比较接近实际工程项目,当然论坛也挺热闹。普中科技:板子便宜。

上面也大概分析了各个教程的特点,自己根据自己的情况(基础、money等)选其中一个板子,跟着教程走就可以了。其实,入门了之后,每一家的代码都可以用的,只需稍微修改一下。

推荐:这几家的开发板都有面积大的、面积小的。大小就是开发板主控外围搭的一些硬件电路多不多,你能做的实验多不多。建议买个不大不小的,功能稍微多一点的,因为作为初学者,大概都比较喜欢玩一些比较直观的实验。买个带屏的,把自己对象的照片显示到屏上去,这够直观、可以足够激发自己的学习兴趣了吧~当然大板子有的功能小板子也可以有,但是得用跳线连接一些模块,怕到时候是因为线接不对又不会排查,导致实验结果出不来,很容易就给劝退了~

看视频还是看书?

如果对STM32没有概念,可以先看几节视频了解了解。有大概了解之后就可以直接看书了,毕竟看视频比较花时间,而且效果不太好。当然有些朋友可能比较喜欢看视频,那也可以,但是要有做笔记的习惯,好记性不如烂笔头,不然你突然忘记了视频讲的某个知识,想要复习的话你就得去翻视频,很耗时间。

我是比较喜欢看书的,可以做笔记、涂涂画画。无论如何,都要培养看书的习惯,逼自己看书,最终要进行提高,都是要回归到书本上去。

用寄存器还是库函数?

STM32有两种编程方式,一种是用寄存器的方式,另一种是库函数的方式。对于初学者而言,可能后者较容易上手。

学从难处学,用从易处用。学习阶段,能学多深就尽量学多深,这样基础会打得比较牢。不只是为了学STM32而学STM32,我们的目标是:学完STM32,换另一款芯片也能很快上手。基础有多牢固,换另一款芯片上手就有多快。

现在STM32有好几种库函数,也有一些辅助工具如STM32CubeMX这种工具,这种是让熟手用的,新手就先暂时先别去碰这种了,因为这些工具给我们屏蔽了太多东西了,不利于我们的学习。

下面是群友分享的网上关于STM32CubeMX与HAL的一些观点,我也比较赞同。

(-编程之家

虽然很多人都推荐只学库函数,但是我觉得在掌握库函数的同时也是很有必要学习一下寄存器的操作方式,因为以后有可能会遇到直接操控寄存器的情况,比如之后进行Linux驱动的学习。库函数其实就是对寄存器操作的封装,对寄存器的操作也不难,就是一些位操作,可查阅往期笔记:嵌入式、C语言位操作的一些常见用法归纳

不用全都学

那些开发板的教程多则上千页,少则几百页/几十个章节:

(-编程之家

不用全都学,等你学完黄花菜都凉了。学一些基本的、通用的、常用的外设:GPIO输入输出(点灯、按键)、EXIT、TIMER、UART、I2C、SPI、ADC、DAC等,当然还有其它的很多也很重要的。先把这些给学了,相信到时候学完了你也有自己的思考了知道该学什么了。等我们入门之后,要用什么再去学什么完全来得及,关键是我们得在平时的学习过程中培养这种能力。

学以致用。在学的过程中,可以尝试着diy一些东西,实在不知道做什么的话论坛逛一逛,一堆好玩的东西。跟着别的人的教程来做,能做出来也是一种能力。不要以为别人的教程写得很简单,实际自己去做的时候才知道会遇到什么困难。在解决困难中成长,那才记忆深刻。

其他

以前我刚开始学STM32的时候忽略了很重要一点:阅读参考手册。导致很多东西都没有理解。所以建议:多看手册、多看手册、多看手册,很多你在看教程看不明白的知识可能可以在参考手册里找到解释。

51单片机推荐书籍

看到后台有一些留言51单片机的,估计正在学51的读者也不少。而本公众号应该不大会分享51相关的知识,因为我工作用不上 ,而且我现在对51单片机也不熟。所以这里顺带推荐两本51单片机的书籍:

敏感的墨镜老师的《手把手教你学 51 单片机-C 语言版》粗暴的柚子老师的《新概念51单片机C语言教程.入门、提高、开发》

两本书都很赞,不仅仅很详细地讲解了51单片机的知识,而且拓展了很多很有用的知识。

总结

写了一堆,完全是想到什么写什么,可能有点乱,还是希望可以对一些朋友有帮助。下面小结一下:

学51/STM32:买开发板,跟着教程学。学从难处学,用从易处用。基础不牢,地动山摇。

猜你喜欢:

长文 | 花了两天时间整理了STM32中的一些C语言知识点

LittlevGL在STM32上的移植使用

STM32如何收发float类型数据?

STM32串口IAP分享

STM32的ISP是怎么一回事?

STM32中另一种打印调试的方法

手把手教你在STM32上使用nanopb

STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)


1024G 嵌入式资源大放送!包括但不限于C/C++、单片机、Linux等。私信回复1024,即可免费获取!