STM32 的学习方法
前言
学习知识要掌握有效的学习方法,学习技术也是一样,本篇分享关于我学习 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 的学习方法的更多相关文章
- STM32固件库模板下载以及固件库学习方法
固件库模板下载 固件库模板新建过程: 下载我们上节的固件库文件 电脑新建一个文件夹命名为Fwlib-Template,在此文件夹下分别新建DOC Libraries Project User 这四个文 ...
- stm32专属于菜鸟的学习方法
1.首先我们先看看与STM32相关的文档 我们假定大家已经对STM32的书籍或者文档有一定的理解.如不理解,请立即阅读STM32的文档,以获取最基本的知识点. 如果你手上拥有ST官方主推的STM32神 ...
- STM32单片机的学习方法(方法大体适用所有开发版入门)
1,一款实用的开发板. 这个是实验的基础,有时候软件仿真通过了,在板上并不一定能跑起来,而且有个开发板在手,什么东西都可以直观的看到,效果不是仿真能比的.但开发板不宜多,多了的话连自己都不知道该学哪个 ...
- STM32学习方法
1.网络学习资源 WWW.openedv.com 开源电子网 WWW.stmcu.org ST中国官方技术网站,ST官方文档发布网站 微信公众平台 正 ...
- stm32开发笔记(二):stm32系列使用V3.5固件库的帮助文件以及GPIO基本功能(一)
前言 stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的. 本章讲解使用库函数使用GPIO引脚功能. 补充 本文章为多年前学习 ...
- ucos实时操作系统学习笔记——操作系统在STM32的移植
使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只 ...
- [转] STM32各种时钟的区别
[原创]:http://m.oschina.net/blog/129357 我在原创的基础又从另一位博主处引用了一些内容. 时钟系统是处理器的核心,所以在学习STM32所有外设之前,认真学习时钟系统是 ...
- [转载]:STM32为什么必须先配置时钟再配置GPIO
转载来源 :http://blog.csdn.net/fushiqianxun/article/details/7926442 [原创]:我来添两句,就是很多同学(包括我)之前搞低端单片机,到了stm ...
- 【NLP】基于统计学习方法角度谈谈CRF(四)
基于统计学习方法角度谈谈CRF 作者:白宁超 2016年8月2日13:59:46 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务 ...
- STM32 NVIC配置详解
例程: /* Configure one bit for preemption priority */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1) ...
随机推荐
- js判断手机系统是android还是ios?
var u = navigator.userAgent; //识别各种浏览器 var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Ad ...
- 题解 SP10500 HAYBALE - Haybale stacking
前言 想了好久树状数组啥的,后来想想写打个差分再说,结果写完一遍AC了-- 强烈安利 题意 一个由 \(n\) 个元素组成的序列,给出 \(k\) 个操作,每次将 \(a\sim b\) 加上 \(1 ...
- RHCE习题
RHCE习题 考试说明: RH294系统信息 在练习期间,您将操作下列虚拟系统: 真实机: foundation: kiosk:redhat root: Asimov workstation.lab. ...
- 为什么 softmax 计算时要先减去最大值
根据 softmax 最基本的定义,计算公式如下所示: $$S_i=\frac{e^{x_i}}{\sum_j e^{x_j}}$$ 原理也很简单,将原向量变为分布的形式(和为1). 看似很美好,但是 ...
- <三>使用类模板实现STL Vector
使用类模板实现STL Vector,点击查看代码 #include <iostream> using namespace std; template<typename T> c ...
- element ui 使用Tooltip 文字提示,文本内容中输入空格
'\u00a0'是'nbsp'的16进制表示 其他空格也可以使用下表的值: 代码如下 <el-tooltip effect="light" placement="t ...
- c#winfrom通讯录管理系统
一个简单的通讯录管理系统,适合毕业设计. 主要实现以下功能 1.系统登录 2.增加联系人 3.修改和删除联系人 4.查找联系人 5.系统用户管理 首先先搭建数据库. 我这边使用的版本是sqlserve ...
- NOIP 口胡
因为没准备啥东西 这两天口胡一下近年 NOIP 的题 大概会一道不落?没什么很寄的考点主要是 2021 T1 报数 打一个 \(O(\log n)\) 查询 \(n\) 中是否有 \(7\),打一个类 ...
- 【每日一题】【集合增删】2022年1月13日-NC41 最长无重复子数组-220113/220122
描述 给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同. 子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1 ...
- 【实时数仓】Day01-数据采集层:数仓分层、实时需求、架构分析、日志数据采集(采集到指定topic和落盘)、业务数据采集(MySQL-kafka)、Nginx反向代理、Maxwell、Canel
一.数仓分层介绍 1.实时计算与实时数仓 实时计算实时性高,但无中间结果,导致复用性差 实时数仓基于数据仓库,对数据处理规划.分层,目的是提高数据的复用性 2.电商数仓的分层 ODS:原始日志数据和业 ...