欢迎您光临电机网,如有问题请及时联系我们。

为什么我学了几天STM32感觉一脸茫然?

作者:清驰电机网
文章来源:本站

  

为什么我学了几天STM32感觉一脸茫然?

  

为什么我学了几天STM32感觉一脸茫然?

  

为什么我学了几天STM32感觉一脸茫然?

  

为什么我学了几天STM32感觉一脸茫然?

  不知道你的基础如何,也不知道你为什么学STM32。从你的表述中,我觉得你与STM32之间差的不止是一门课程,也许是一个大学。我狠犹豫,我的回答也许会严重影响你的积极性。因为学习STM32你需要许多专业学科作为支撑。比如数字电子、模拟电子、微机原理、汇编语言、C语言等等。甚至将来你还会需要高等数学和数字信号处理方面的知识。不过先别被这些吓倒,因为只要你有兴趣这些都不是问题。

  就是论事,我们只说如何学习STM32。正确的学习方法十分重要。首先你要有一个开发板,很幸运我们同样选择了正点原子的开发板。其实我的开发板基本没用过,放在那里吃灰。但它依然很重要,因为它你有了正确的原理图;有了正确的可执行代码;有了丰富的开发文档;有了自己的调试环境。这些都是非常重要的参考。

  接下来,你需要自己搭建电路,运行并学习开发板提供的例程代码。如果你还没有能力自己绘制核心板,可以购买现成的核心板来用。下图是我学习stm32时自己在洞洞板上搭建的电路板之一,核心板是自己绘制并焊接的。这一步十分重要,学习单片机的关键就是要亲自动手。如果你只是在别人的硬件上跑一遍别人的代码,你几乎什么都学不到。板子不用一步到位,学到什么功能就搭建什么电路。在这过程中,会遇到许多困难,你会困惑、彷徨甚至绝望,只有利用浑身解数解决这些问题,你才能真正的成长起来。

  有了自己的硬件,接下来就是软件部分的学习。按照原子的例程,做实验,亲自构建工程,亲手输入代码。由于STM32的复杂性,不可能一开始什么都学会,先掌握IO口、中断、定时器的基本运用。然后再学习一下串口、llC、SPI通讯。这些基本掌握后,找一个stm32的开源项目,并参与其中继续提高自己。

  我选择了开源四轴飞行器。最开始通过学习国内匿名四轴的源代码,了解了四轴飞控的基本原理。之后学习国外开源飞控betaflight的源码,受益匪浅。下面是我自己的f4飞控板,运行的是自己编写的飞控程序。在我的头条视频中,有它的飞行视频。

  先来看一下STM32简介。

  STM32F103器件采用Cortex-M3内核,CPU最高速度达72 MHz。该产品系列具有16KB ~ 1MB Flash、多种控制外设、USB全速接口和CAN。

  ST在后续几年陆续推出了Cortex-M0+、Cortex-M4内核的芯片,并进行不断优化。

  按内核架构分为不同产品,其中STM32F1系列有:

  基本型:STM32F101R6、STM32F101C8、STM32F101R8、STM32F101V8、STM32F101RB、STM32F101VB

  增强型:STM32F103C8、STM32F103R8、STM32F103V8、STM32F103RB、STM32F103VB、 STM32F103VE、STM32F103ZE

  互联型:STM32F105、STM32F107

  再来说一下STM32学习。

  学STM32嵌入式,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C语言的板级编程。如果从软件上讲,就是要学习基于ARM处理器的操作系统层面的驱动、移植了。硬件的寄存器类的东西还是要能看懂的,掌握基于板级的汇编和C编程。

  主要需要学习的有:

  基础操作:GPIO操作,串口操作,定时器操作,NVIC和中断,看门狗,DMA操作,ADC操作,SPI接口通信,IIC接口通信,CAN总线通信等。

  进阶操作:低功耗操作,STM32时钟树,STM32实现位带特性,STM32启动过程详细分析,环形缓冲期的实现,软件定时器的设计,IO口模拟IIC的实现。

  综合应用:STM32-IAP的实现,STM32-DAPLink的实现。

  带操作系统的程序学习与开发:可用操作系统分析,rt-thread系统移植与学习,FreeRTOS移植与学习。

  本人学过51,工作后学的stm32。 开始学的是正点原子的板子(当时也狠心买了寄存器版和固件库版的书[流泪][流泪][流泪]贵死了),但是不知道为什么 有点听得糊里糊涂的,各种外设寄存器,时钟锁相环ahb,apb那些。后来网上找课程对比一下 果断转去野火。野火的教程很详细 细节做到位,通俗易懂。 前期听着野火的教程配合着原子教程交叉学习 ,搞得差不多就可以各取所需了。以上是我的学习过程。一起努力加油吧。

  在我看来学习STM32的目的无外乎是自己喜欢,或者转到嵌入式研发领域工作(赚更多的??)。

  不同的目的,不同的学习经历,学习MCU的方法也是不同的。如果选择了错误的方法不但费时费力也极大打击了自己的信心。

  拿我自己举例,20年前计算机应用专业毕业,学习了模点,数电,微型计算机原理,pascal高级语言,8086汇编语言,数据结构,基本上从硬件到软件以及简单的算法都学过了。在这个基础上干了2年硬件方面的工作后就开始了MCU的自学,从PIC的8位MCU开始。

  这里要说明一下,什么是单片机,什么是MCU。现在我们普遍将两者混为一谈。其实单片机是相对于早期的分立元件组成的微型计算机而言的,将RAM芯片,ROM芯片,CPU芯片,IO控制芯片等等都集成在一个芯片中的系统称之为单片机。而MCU则是微控制器,他是在单片机的基础上又集成各种各样的功能到芯片内部,比如ADC,DAC,PWM,UART,I2C,SPI等等。赋予单片机各种控制能力。

  2000年那个时代网络很不发达,没有学习视频可以看,但是相关的专业书籍还是不错的。也是因为自己的专用基础比较好所以学习起来并不是很吃力。此外,如果自己一开始就有用MCU实现某个功能的想法时,学习就不会很空洞,知道自己应该从哪里开始。一开始就从汇编学习MCU的编程会让人很难受,但这是最直接的一种方式,就像把MCU扒开来看,从最底层开始可以了解到最核心的内容。当你用这种方式掌握了一种MCU后就打开了通往所有MCU的大门,因为他们都是同类。

  这20多年来,我也带了不少新入的工程师。我给你一些建议,如果你是一个相关专业领域毕业的,至少在硬件或者软件层面上沾点边的,并且想进入这个领域赚大????????????????,那么认认真真从最基本的开始学,从寄存器的每一个位的作用开始学,当然先确定要实现某个功能,然后看手册来自己通过寄存器配置实现他,可以从最简单的功能开始,比如流水灯。可以看书,看视频来辅助学习,但是不要用任何STM32的HAL库,第三方的也罢,都不要用!等你直接用寄存器配置实现了之后再用库函数实现一次,或者你实在无法自己用寄存器实现,那也可以先用库来实现,然后一一比对自己的寄存器配置是哪里没有配置正确。总之一句话,绝对不要用库!当你掌握了原理之后,想用什么随意[呲牙]!

  与此不同的是,如果你只是兴趣爱好,那么你想用什么方法都可以,你喜欢,你可以用最舒适的方法[奸笑]!

  最后,告诉你一个无情的事实,找到一个乐于分享的大师高手比什么都有效[偷笑]!

  我也是,刚开始的确是这样,我是从51学过来的,然后学的正点原子的32,一开始学32非常的困难,后来我放慢了速度就好了,方法就是看视频前,自己先多几遍看资料,看完视频试着做做总结,慢慢来,千万别着急。

  

单片机的开发其实没啥懂不懂的,关键就是你按照主芯片的开发手册去把相关的功能配置好,让功能实现。你得懂一些硬件,你得会读并且读懂芯片的英文开发手册(用哪查哪,不可通篇阅读),因为配置过程那是人家设计CPU的工程师事先给你规定好的,都写在开发手册里。

  自学的51,没做过开发,但是会看datasheet。看了看stm32的hal开发,就象见到了宝。各种硬件的初始化都可以用stm32cube做了,极大提高了开发效率,能让开发者专注于核心代码开发。要是兆易创新能做出一样的功能,那国产mcu的崛起指日可待。stm32学习先挑款全针脚引出的开发板,然后研究一下datasheet,学习是stm32cube的配置过程及生成代码框架,最后进行核心代码开发.

  看普中科技stm32教程。这教程很基础易懂

  学习计算机知识,关键在于一边实际操作,一边有老师指导。

  要么找企业做学徒,要么上培训班

  根据您描述,可以说您在前期的准备阶段基本已经完成(包括C语言,实验板和编译环境),也开始跟着原子哥的教学视频开始了STM32的学习之路。但是根据答主的经历来看,其实您还差了关键的一个步骤:对STM32MCU理论知识的学习和理解。

  答主根据个人嵌入式软件的学习经历,总结如下单片机软件学习知识脑图:

  对于初学者而言,如果对MCU的理论知识(比如时钟树,GPIO/UART/IIC/SPI等配置过程)没有一个扎实和正确的认知,那么答主觉得跟着视频学习,即使学会也大半是知其然而不知其所以然。当然不排除有的朋友根据视频也能把基础打得牢固(但我觉得他们也在视频学习中穿插了基础的学习和理解)。

  以上仅代表个人建议,仅供您参考。

来源:文章来源于网络,如有侵权请联系我们删除。本文由电机网编辑,欢迎分享本文,转载请保留出处和链接!