前言

学习知识要掌握有效的学习方法,学习技术也是一样,本篇分享关于我学习 STM32 后总结的学习方法。

推荐的学习方法

系统学习

在网上购买一款开发板,使用开发板+开发板配套视频教程+开发板配套源码+芯片官方手册搭配学习。

安富莱、正点原子、野火,这三家公司研发的开发板都挺不错,可自由选择一款作为学习使用。

拒绝做伸手党

要学会如何学习,如何解决问题,拒绝做伸手党。

在学习过程中遇到问题,应先尝试自己查资料或上网搜索进行解决,找资料的过程中看看别人的理解思路。如果在查资料或搜索后并没有找到满意的答复,这时便可以寻求大佬的帮助向大佬提问(文末附有大佬云集的论坛网站链接)。

不经过思考的提问,对自己没有提升。学习技术的过程中,如果你只会做伸手党,那将什么都学不到。

拿到开发板后如何入手

  • 先看提供的开发板配套资料的目录,了解配套资料的情况
  • 找到核心的学习资料,大致了解开发板硬件资源
  • 查看资料,安装开发环境
  • 开启学习之旅,先学基础的,基础要多学多问
  • 高级的知识,可以慢慢来学
  • 学习过程中不懂的,要先查资料,然后提问

需要参考哪些资料

  • 最底层(了解):CM3 权威指南 / CM4 权威指南(ARM 提供 )
  • 芯片参考手册(芯片功能寄存器描述特性等)(详细了解):STM32F10x 中文参考手册 / STM32F4x 中文参考手册(ST 提供)
  • 芯片数据手册(datasheet,ds)(了解):STM32F103xCDE_DS_CH_V5.pdf(芯片电气参数,引脚说明等)
  • 官方其它资源和教程(了解):固件库包(含参考源码),一些官方培训 PPT(通过 ST 官网获取)
  • 你所购买开发板的学习教程(手册,视频,源码)(理解):针对开发板的源码,教程,视频等,要将源码的涵义吃透(开发板商家提供)

需要掌握哪些基本技能

熟练掌握 C 语言

C 语言是嵌入式开发的基础中的基础,大多数嵌入式项目的开发都是用 C 语言来编写的,如果 C 语言不过关,将会大大限制嵌入式学习的进度,以及嵌入式学习的深度。

熟练掌握一种开发环境与调试工具

在这里强调的是一种开发环境与调试工具,现在市面上供我们选择的开发环境和调试工具有很多,但我们只需熟练掌握一种就好啦,精通一种后其余的在以后也容易上手。

  • 掌握一种开发环境:Keil uVision5(MDK-ARM)
  • 掌握一个调试工具:JTAG (必备)

MDK-ARM 软件为基于 Cortex-M、Cortex-R4、ARM7、ARM9 处理器设备提供了一个完整的开发环境,MDK-ARM 专为微控制器应用而设计,不仅易学易用,而且功能强大,能够满足大多数苛刻的嵌入式应用。

市面上关于 STM32 的视频教程中,绝大多数都是使用 MDK-ARM 进行教学的,这里我也推荐大家使用并熟练掌握 MDK-ARM。

我们处在初学阶段时基础不够扎实,对于开发板配套源码或自己编写的代码千万不要走马观花的看,一定要多使用 JTAG 调试代码,深入理解代码执行的流程,做到深入理解代码的涵义。

寄存器、标准库、HAL 库如何选择

标准库和 HAL 库任选其一,或两个一起学习,然后与寄存器对比着学习。

项目中大多数用标准库或 HAL 库,但是作为学习,如果只会看几个函数的话,那么你根本就没有学懂,遇到问题很难自己解决,所以有必要了解一下寄存器的配置原理,加深对底层驱动的理解。

掌握标准库或 HAL 库的基本配置方法,了解寄存器底层配置过程,以便深入理解 STM32 芯片的本质。

深入学习基本外设,选择性学习高级功能

基本外设

单片机主要学习的就是单片机内部的四大基本外设,分别是 GPIO 输入输出、外部中断、定时器和串口通信(串行 I/O 口),理解掌握了这四个外设,基本就入门了一款 MCU。

基本外设接口

这些外设接口功能原理对每个芯片几乎都是一样,对芯片而言就是加减法而已。

SPI,IIC,WDG,FAMC,ADC/DAC,SDIO 等。

高级功能

UCOS,FATFS,EMWIN 等,以及一些应用。

论坛网站推荐

下面推荐几个国内顶尖的 STM 论坛网站,可通过网站获取资源,在学习过程中遇到的问题也可以在上面进行提问,会有大佬在论坛进行解答,当然如果你自己就是大佬,也可以在论坛中为嵌入式小白们解答问题。

后记

因为目前我对 STM32 的学习还不够深入,理解也不够透彻,所以如果文中有表述不清晰或观点不正确的地方,还请大佬批评指点。

STM32 的学习方法的更多相关文章

  1. STM32固件库模板下载以及固件库学习方法

    固件库模板下载 固件库模板新建过程: 下载我们上节的固件库文件 电脑新建一个文件夹命名为Fwlib-Template,在此文件夹下分别新建DOC Libraries Project User 这四个文 ...

  2. stm32专属于菜鸟的学习方法

    1.首先我们先看看与STM32相关的文档 我们假定大家已经对STM32的书籍或者文档有一定的理解.如不理解,请立即阅读STM32的文档,以获取最基本的知识点. 如果你手上拥有ST官方主推的STM32神 ...

  3. STM32单片机的学习方法(方法大体适用所有开发版入门)

    1,一款实用的开发板. 这个是实验的基础,有时候软件仿真通过了,在板上并不一定能跑起来,而且有个开发板在手,什么东西都可以直观的看到,效果不是仿真能比的.但开发板不宜多,多了的话连自己都不知道该学哪个 ...

  4. STM32学习方法

    1.网络学习资源 WWW.openedv.com      开源电子网 WWW.stmcu.org         ST中国官方技术网站,ST官方文档发布网站 微信公众平台             正 ...

  5. stm32开发笔记(二):stm32系列使用V3.5固件库的帮助文件以及GPIO基本功能(一)

    前言   stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的.  本章讲解使用库函数使用GPIO引脚功能.   补充   本文章为多年前学习 ...

  6. ucos实时操作系统学习笔记——操作系统在STM32的移植

    使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只 ...

  7. [转] STM32各种时钟的区别

    [原创]:http://m.oschina.net/blog/129357 我在原创的基础又从另一位博主处引用了一些内容. 时钟系统是处理器的核心,所以在学习STM32所有外设之前,认真学习时钟系统是 ...

  8. [转载]:STM32为什么必须先配置时钟再配置GPIO

    转载来源 :http://blog.csdn.net/fushiqianxun/article/details/7926442 [原创]:我来添两句,就是很多同学(包括我)之前搞低端单片机,到了stm ...

  9. 【NLP】基于统计学习方法角度谈谈CRF(四)

    基于统计学习方法角度谈谈CRF 作者:白宁超 2016年8月2日13:59:46 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务 ...

  10. STM32 NVIC配置详解

    例程:  /* Configure one bit for preemption priority */  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1) ...

随机推荐

  1. token字段,请务加在请求地址的头部header

    如下图所示,你必须在请求的头部加上 token参数,主要原因有两个.第一点,这个是登录标志,因为接口访问用不了cookie,所以只能通过这个header请求标志判断用户是否已经登录.第二点,系统有时候 ...

  2. FTP文本传输协议

    一.存储类型 存储类型分为三种: 直连式存储:Direct-Attached Storage,简称DAS 网络附加存储:Network-Attached Storage,简称NAS(存储和管理空间都在 ...

  3. 5.websocket原理

      websocket协议原理 1.WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实现了浏览器与 ...

  4. 如何解读Linux Kernel OOPS信息

    OOPS信息解读 root@firefly:~/mnt/module# insmod oops_module.ko [ 867.140514] Unable to handle kernel NULL ...

  5. 还在用双层for循环吗?太慢了

    前情提要 我们在开发中经常碰到这样的场景,查出两个 list 集合数据,需要根据他们相同的某个属性为连接点,进行聚合.但是平时我们使用的时候关注过性能吗?下面让我们一起来看看它的表现如何. 来个例子 ...

  6. Django系列---理论一

    教程:http://c.biancheng.net/django/ 特点 集成 ORM 组件:Django 的 Model 层自带数据库 ORM 组件,为操作不同类型的数据库提供了统一的方式. URL ...

  7. js把秒数转换为HH:MM:SS及时分秒格式

    /** * 转为HH:MM:SS * @param second * @returns {string} * @private */ var _showTime = function (second) ...

  8. 一个jsqlparse+git做的小工具帮我节省时间摸鱼

    背景 前些时间做了个小工具解决了团队内数据库脚本检验&多测试环境自动执行的问题,感觉挺有意思,在这跟大家分享一下. 工具诞生之前的流程是这样: 1.开发人员先在开发环境编写脚本&执行: ...

  9. 生成requirements.txt

    requirements.txt文件 requirements.txt 文件是项目的依赖包及其对应版本号的信息列表,即记载你这个项目所安装的依赖. 作用:用来重新构建项目或者记录项目所需要的运行环境依 ...

  10. 【Oracle】Oracle读取RAW二进制类型并实现与十六进制的相互转换

    1.十六进制转二进制 select HEXTORAW('7264B1CD0582734D8E27E0FBDA15B2A5') from dual; 2.二进制转十六进制 select AUUID_0, ...