初学STM32单片机,选择什么开发板?

不知道大家有没有这样一种感觉?

虽然市面上STM32的教程很多。

很多新手从51单片机过渡到STM32依然有点水土不服。

很多教程刚开始看,就感觉一脸懵逼。

 

我总结了一下,主要有以下几点不适应:

1.开发模式变了

51单片机主要以配置寄存器去使用外设,而STM32则直接提供标准库和HAL库调用使用外设。

使得大家需要去熟悉库,才能把外设用起来,而官方的库使用了很多c语言高阶编程,比如说面向对象编程思维,实现这种思维主要以指针、结构体、枚举等。

如果你的c语言基础不好,库里面很多代码看起来都很吃力。

 

2.外设资源更丰富了

STM32涉及到很多概念,可能之前都没接触过,例如时钟系统、DMA、NVIC等,需要花费一些时间去理解和掌握。

 

3.配置过程更繁琐了

我们在学习STM32开发时,需要对芯片进行一些繁琐的配置,例如时钟配置、GPIO配置、定时器配置、USART配置、中断配置等等,这些比51单片机配置起来更复杂。

主要是要适应这种开发方式,库用熟了以后,你会发现STM32比51使用更简单。

虽然现在教程都讲得非常细致,但是我觉得并不利于新手学习。

第一个是很多专业的概念,理解起来比较费劲,一个知识点可能牵扯出更多的不可理解的知识点。

第二个是教程过于系统,基本把STM32每个外设都讲了,其实很多外设实际用得很少,但是学习需要付出大量时间,导致学习周期太漫长

我认为学习STM32这种级别的单片机,最好的方式就是通过项目去学习

我学STM32的时候,正好公司碰到了一个新项目需要STM32做。

在此之前,我已经做过几个基于51单片机的项目,也改过基于NXP单片机的项目代码。

所以对不同单片机配置流程有一定的了解,c语言基础也还可以。

项目很急,没有时间给我系统去学STM32。

我就在网上购买了一个STM32开发板

 

这已经是2012年的事了,我买开发板的目的主要是想要每个外设的例程,当时还没有视频教程。

我看项目需要用到哪些外设,然后先在开发板用例程把外设调通,再把代码复制到项目里,改改参数,比如说改改GPIO、改改定时器中断时间、改改串口引脚。

大概花了2周时间,项目涉及到的外设基本都成功用起来了,剩下的时间都放在做项目功能上。

说起来有点搞笑,我一直都觉得自己误打误撞,正好撞对了STM32正确的学习姿势。

 

为什么我认为通过项目学STM32是最好的学习方式?

1.基于实际需求

通过项目学习,可以更好地基于实际项目需求,去学习STM32相应的外设,这样可以避免漫无目的学习,更能够让初学者感受到学习的价值和实际应用。

学STM32一定先要用起来,比如说外设初始化代码先配置好,先把外设调出来,再通过代码去理解理论,通过理论去配置外设,时间至少多几倍。

所有单片机外设都大同小异,单片机只是工具,关键是通过项目你才能深刻理解每个外设到底有什么用,实际用在哪里。

 

2.综合应用

几乎每个初学者都会碰到一种情况,花了大几个月通过开发板学STM32,学完以后让你用STM32去做项目,一脸懵逼。

这是非常普遍的现象,跟开发板定位有关,开发板的定位是教你学会某款单片机。

而对于项目,单片机只是很小的一部分,更多的是项目综合功能的整合。

比如像无际单片机特训营的项目

单片机外设调通一般就不会去深究它,有90%的工作量都是实现项目功能,比如433M无线数据解码算法、菜单UI系统、温湿度采集、触摸按键检测、语音提示、无线探测器组网、和WiFi模块、4G模块通讯实现APP控制、电话功能、短信功能、还有固件远程升级功能等。

对于做项目来说,你会用单片机外设和精通单片机外设,对做项目来说没什么区别。

而你的编程思维和代码水平,才是项目能否做稳定的关键因素。

那问题来了,既然如此,为什么要花这么多时间去深究单片机?而不是培养编程思维和代码水平?这不就是明显的走弯路吗?

给TA买糖
共{{data.count}}人
人已赞赏
单片机百科

有STM32基础,该怎么学习蓝牙、WIFI知识?

2023-3-11 10:03:01

单片机百科

嵌入式linux和单片机怎么选?

2023-3-16 19:36:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧