关于STM32的入门问题

发布者:MagicGarden最新更新时间:2023-05-06 来源: elecfans关键字:STM32 手机看文章 扫描二维码
随时随地手机看文章

前言

前两天在群里看到群友们在讨论学习STM32的话题,并且今天也有一位机械专业的准研究生读者也问了STM32的入门问题。


正好我也有一点点经验,所以试着分享一下这个话题。我也不是什么大神,只是一名普通的工程师,以下分享仅仅是自己的一点经验及看法,仅供参考,希望能对一些初学的朋友有所帮助。老鸟略过~~


找资料

在知乎,我也有看到类似问题:学STM32要买什么书籍、看什么书籍?

STM32编程作为一项实操性很强的技能,所以要多实操。初学的话,我觉得书籍就暂时先不买吧,先考虑入手一块STM32开发板,然后跟着开发板的教程走。

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

现在市面上还比较火的基本就只剩前4家了,从这4家中选择一家买开发板。正好这4家的教程我都基本上都有看过一遍,下面简单介绍一下它们各自的特点:

1、正点原子

正点原子的教程特点的关键词:手把手。

教程对初学者比较友好。51转过来的,觉得自己基础不太好的朋友可以选这个教程,我以前入门也是看了原子哥的视频入的门。

有个缺点就是:代码编码风格不是太好。我现在比较少看他们的代码,因为看起来不舒服~

2、野火


野火教程特点的关键词:零死角。

野火的教程非常好,适合反反复复地读,STM32的教程我看得最多的就是野火的了。我觉得无论现在你在用什么教程,最终都有必要再看一下野火的教程。

野火的教程很多知识点剖析得很透彻,真所谓零死角。火哥书里有这样一句话:基础不牢,地动山摇。与君共勉~

3、安富莱

安富莱教程特点的关键词:授人以渔。

安富莱的教程是我工作之后看得比较多的,教程在很详细剖析知识点的同时也在教我们学习的方法。

其实我第一次接触STM32用的是安富莱的教程,但那个时候看安富莱的代码令我很难受,当时不明白为什么那些变量命名得那么花里胡哨,所以也就没用它们的教程。

后来有了一点基础之后才发现我错了,这是多么规范的代码啊!安富莱教程是精品中的精品,适合进阶。

安富莱的教程我觉得跟野火的教程基本不分上下,让我做选择我也选不出。小孩子才做选择,我们成年人可以全都学~

但就代码风格及框架而言,安富莱的代码风格是最接近实际项目的,我第一份工作的公司的代码风格基本上就是沿用安富莱的代码风格,看得很舒服、很有条理。

看这工程有没有觉得很舒服?除此之外,安富莱对一些调试技巧方面很用心,比如把Jlink的各种调试手段基本都挖掘出来了(可以去看它们的专题教程,很香)。

正点原子有原子哥、野火有火哥,这些都是大佬级的人物(出书狂魔、出教程狂魔)。安富莱也有这样重量级人物:硬汉哥。

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

这里介绍安富莱的篇幅最长,是想让大家多多认识一下安富莱,因为作为STM32教程的三巨头之一,安富莱的用户好像较前两家少很多。

(就我了解目前做STM32教程最火、用户比较多的就只有:正点原子、野火、安富莱这三家。不知道还有没有其它我不知道的,所以这里暂且称它们为STM32教程三巨头)

好的教程应该是要让更多的人看到的,让更多的人支持,这样这些大佬才有能量创造更多的教程来供我们学习。

上面那张图列举了那么多教程,其实有些还是挺不错的,不知道为什么现在基本都看到了。比如:

众想科技,当时我觉得那应该是从51转到STM32最好的入门资料,教程的编码习惯跟我们学51时的编程习惯差不多,关键是那位老师现场敲代码,一个一个字母地敲,包括STM32的固件库函数,当时MDK还没有补齐功能,当时很是佩服。

以为它会发展得很好,但是现在基本上都没听说过众想科技了。(估计是它的教程收费的原因,基础教程免费,提高教程收费)

4、普中科技

普中科技特点:开发板便宜、开发板便宜、开发板便宜。实在买不起上面三家的开发板的可以选择这个。

一百八还带屏幕,太香了。我大学时买了一块,现在还有留着。其它没啥说的,它有的上面三家都有。

5、其它

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

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

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

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

6、总结

几个教程的特点:

正点原子、野火:用户较多,论坛热闹。

安富莱:代码规范、代码框架比较接近实际工程项目,当然论坛也挺热闹。

普中科技:板子便宜。

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

推荐:这几家的开发板都有面积大的、面积小的。大小就是开发板主控外围搭的一些硬件电路多不多,你能做的实验多不多。建议买个不大不小的,功能稍微多一点的,因为作为初学者,大概都比较喜欢玩一些比较直观的实验。

买个带屏的,把自己对象的照片显示到屏上去,这够直观、可以足够激发自己的学习兴趣了吧

当然大板子有的功能小板子也可以有,但是得用跳线连接一些模块,怕到时候是因为线接不对又不会排查,导致实验结果出不来,很容易就给劝退了~

看视频还是看书?

如果对STM32没有概念,可以先看几节视频了解了解。有大概了解之后就可以直接看书了,毕竟看视频比较花时间,而且效果不太好。

当然有些朋友可能比较喜欢看视频,那也可以,但是要有做笔记的习惯,好记性不如烂笔头,不然你突然忘记了视频讲的某个知识,想要复习的话你就得去翻视频,很耗时间。

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

寄存器还是库函数?

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

学从难处学,用从易处用。学习阶段,能学多深就尽量学多深,这样基础会打得比较牢。

不只是为了学STM32而学STM32,我们的目标是:学完STM32,换另一款芯片也能很快上手。基础有多牢固,换另一款芯片上手就有多快。

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

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

虽然很多人都推荐只学库函数,但是我觉得在掌握库函数的同时也是很有必要学习一下寄存器的操作方式,因为以后有可能会遇到直接操控寄存器的情况,比如之后进行Linux驱动的学习。

库函数其实就是对寄存器操作的封装,对寄存器的操作也不难,就是一些位操作

不用全都学

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

不用全都学,不然等你学完后面基本就会忘记前面。学一些基本的、通用的、常用的外设:GPIO输入输出(点灯、按键)、EXIT、TIMER、UART、I2C、SPI、ADC、DAC等,当然还有其它的。

这些用得多,先把这些给学了,相信到时候学完了你也有自己的思考了知道该学什么了。等我们入门之后,要用什么再去学什么完全来得及,关键是我们得在平时的学习过程中培养这种能力。

学以致用。在学的过程中,可以尝试着diy一些东西、做一些小作品,实在不知道做什么的话论坛逛一逛,一堆好玩的东西。跟着别的人的教程来做,能做出来也是一种能力。

不要以为别人的教程写得很简单,实际自己去做的时候才知道会遇到什么困难。在解决困难中成长,那才记忆深刻。

其他

以前我刚开始学STM32的时候忽略了很重要一点:阅读参考手册。导致很多东西都没有理解。

所以建议:多看手册、多看手册、多看手册,很多你在看教程看不明白的知识可能可以在参考手册里找到解释。

51单片机推荐书籍

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

所以这里顺带推荐两本51单片机的书籍:

宋雪松老师的《手把手教你学 51 单片机-C 语言版》

郭天祥老师的《新概念51单片机C语言教程.入门、提高、开发》

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

总结

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

学51/STM32:买开发板,跟着教程学。

学从难处学,用从易处用。

基础不牢,地动山摇。


关键字:STM32 引用地址:关于STM32的入门问题

上一篇:用STM32CubeIDE软件实现STM32外部中断实例
下一篇:stm32复位电路工作原理

推荐阅读最新更新时间:2024-11-09 10:54

STM32定时器中断应用实例
本文将介绍:通过STM32cube mx配置工程文件,实现定时器中断的功能; 实例中使用的是STM32F407芯片 ①STM32cube mx配置工程文件 ②代码实现 ①STM32cube mx配置工程文件 Step1:使能RCC、选择外部晶振 Step2:配置时钟树 Step3:使能TIM6、配置TIM6 ,1秒产生一次定时器中断 Step4:配置中断的优先级分组、中断优先级 Step4:使能串口、用于调试使用 Step5:生成工程文件 ②代码实现 Step1:编写串口输出重定向函数,用于调试使用;记得添加头文件stdio.h Step2:开启定时器中断 Step3:自定义定时器中断服务函数 先在
[单片机]
<font color='red'>STM32</font>定时器中断应用实例
基于STM32的Keil和偏移地址程序存储
有时候,我们不想让程序存储在起始的位置,比如现在有一段bootloader,对应的app(应用程序)存储的位置就会有一个偏移地址。那么,如何让程序存储在指定的偏移地址呢? 本文将结合STM32,给大家讲一讲在Keil和IAR开发环境中设置起始地址0x08010000的方法。 Keil配置方法 首先,打开工程目标选项:Project - Options for Target - Target。 修改目标ROM起始地址,如下图所示: 说明: 1、勾选的IROM即对应的存储区域; 2、起始地址(Start)和大小(Size)根据你实际情况进行配置。 IAR配置方法 类似方法,进入配置界面: 1、进入配置界面:Pooject
[单片机]
基于<font color='red'>STM32</font>的Keil和偏移地址程序存储
STM32内存管理(一)
STM32是指令和数据共用相同的地址空间,即程序存储器、数据存储器、寄存器和I/O端口在一个4GB的线性地址空间内。数据字节以小端格式存放在存储器中,一个字的最低地址字节被认为是该字的最低有效字节,而最高地址字节是最高有效字节。 一、STM32存储器架构 4G的地址空间即地址编码的范围,编码就是对每一个程序存储、数据存储器、寄存器和I/O端口分配唯一的地址编码,即“编址”或“地址映射”。 存储器映射是把芯片中或芯片外的Flash、RAM、外设、BOOTBLOCK等进行统一编址。 STM32的寻址空间大小为4G,也就是从0x0000 0000~0xFFFF FFFF这一块空间,分为8个主要块,
[单片机]
<font color='red'>STM32</font>内存管理(一)
STM32 Cubemax(七) —— 单级PID控制带编码器的直流减速电机速度
前言 前面的文章介绍了如何去读取带编码器电机中编码器的值,并对此值进行处理得到了电机当前的转速值。而带编码器的电机最大的作用也就是可以让我们得到电机的速度反馈,利用PID或者其他控制算法,去控制其达到我们设定的速度。 如有看电机控制相关,请先看看我的上篇博客 STM32 Cubemax(六) —— STM32利用定时器编码器模式处理带编码器直流电机 一、PID控制 PID控制作为一种经典的控制算法,如果你听过这个控制算法,那你也一定对其有算了解了,不管是书还是各种网站视频,都有讲的十分好的教程,如果对此还有不了解的,可以去b站或者CSDN上看看相关视频,具体原理这里就不多阐述了。 而我们这次要控制的对象则为电机的速
[单片机]
<font color='red'>STM32</font> Cubemax(七) —— 单级PID控制带编码器的直流减速电机速度
stm32和电机开发(从架构图到文档编写)
很多同学不喜欢写文档,总觉得写文档耽误事,影响开发效率。实际上,不一定是那么回事。在实际开发中,编写文档的目的主要是为了厘清自己的思路,在开发代码前把所有的事情都考虑到,防止代码写了一半,需要推倒重来的情形发生。 当然,很多时候编写文档的确是枯燥的,那么有没有什么好的办法,可以让文档编写稍微变得容易一点,答案就是先写架构图。因为文档本身就可以看成是架构图+文字的格式。 1、先编写架构图 架构图是软件的魂。我们拿到软件开发需求后,第一步要做的就是模块拆分、流程抽象和接口设计。这部分可以找一些合适的软件来完成,比如visio、openoffice draw、processon都可以。总之,只要能达到目的就行。比如我们写一个网站
[单片机]
<font color='red'>stm32</font>和电机开发(从架构图到文档编写)
8051单片机和STM32单片机的编程环境对比
单片机编程是一门实战性的技术,程序要在单片机平台上跑起来才能看到效果、才能积累编程经验。在学校学习单片机课程时,可能会感觉到一直有一种脱节的感觉,因为一直没有用武之地。其实学习单片机很简单,第一步就是搞清楚编程环境。 入门单片机时,我们常用51型8051单片机和STM32单片机。这两种单片机比较典型,因为学校里单片机课程是基于51单片机的,而STM32的单片机则具有较多的学习资料。下面就这两种单片机介绍一下编程环境。 1、单片机常用的编程环境 比较流行的单片机环境有keil和IAR,这两种环境可以覆盖市面上90%的单片机型号,而且都提供了函数库。根据单片机位数不同,这两个编程环境也有不同的版本。 1.1 Keil的常用版本
[单片机]
8051单片机和<font color='red'>STM32</font>单片机的编程环境对比
STM32系列可通过FMSC接口外扩并口SRAM
STM32MCU一般情况下配置有1~2MB双块Flash存储器和256KB SRAM,在某些应用设计中会出现内置RAM不足的情况,需要对STM32单片机进行外扩RAM的处理,可以选择更换更高RAM容量的单片机,除了价格贵还需要涉及其他被动器件的更改,STM32系列可以通过FMSC接口外扩并口SRAM,比如采用ISSI的IS62WV51216, IS62WV51216 SRAM芯片是一个8M容量,组织结构为512K*16的高速率低功耗静态随机存储器。IS62WV51216高性能CMOS工艺制造。高度可靠的工艺水准再加创新的电路设计技术,造就了这款高性能,低功耗的器件。使用IS62WV51216的片选引脚和输出使能引脚,可以简单
[单片机]
<font color='red'>STM32</font>系列可通过FMSC接口外扩并口SRAM
STM32学习笔记】USART 硬件流控
流控的概念源于 RS232 这个标准,在 RS232 标准里面包含了串口、流控的定义。大家一定了解,RS232 中的“RS”是Recommend Standard 的缩写,即”推荐标准“之意,它并不像 IEEE-1284、IEEE-1394 等标准,是由“委员会定制”。因而,不同的厂商在做 RS232 时,多少会有不同,流控也都会存在差异。以下我们与大家一起探讨流控的作用、搭建及如何操作。 本文着重探讨硬件流控。 为什么需要流控? 数据在两个串口之间进行通讯的时候常常会出现丢失数据的现象,比如两台计算机或者是一台计算机和一个单片机之间进行通讯,当接收端的数据缓冲区已经满了,这个时候如果还有数据发送过来,因为接收端没有时
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved