STM32系列微控制器入门介绍
文章目录
- 目的
- 基础需求
- 电路基础
- 编程语言
- 入门介绍
- 官方网站
- 型号选择
- 开发方式
- 开发工具
- 程序调试
- 固件烧录
- 资料说明
- 总结
目的
STM32是意法半导体(ST)推出的主要基于ARM Cortex-M内核内核的一系列微控制器(MCU、单片机),包含多个系列:
整体上目前来说STM32系列微控制器性能、功能、价格、开发难易度、资料支持上都中规中矩,没有特别突出的,也没有特别特别短板的,用用还是蛮不错的。这篇文章就介绍下STM32系列入门所需的相关知识点。
基础需求
在入门学习使用STM32系列微控制器前如果有下面两项知识技能那是最好(学习使用其它单片机也一样),当然如果没有也不是太大问题,可以边使用边学习嘛~
电路基础
对于入门学习使用来说电路基础要求不多,了解点初中电学知识,然后在学习过程中能了解 上拉电阻
下拉电阻
的概念就差不多了。
编程语言
编程语言的话目前来说只要掌握 C语言
就成,当然语言学习还是边用边学就成。稍微进阶点的话可以学一学 C++
,毕竟更高级语言,开发起来会更方便快捷些。
入门介绍
官方网站
使用开发ST的微控制器第一手的资料来源就是ST官网:
https://www.st.com/content/st_com/en.html
官网可以下载到所有开发所需要的资料、数据包、官方工具。
另外的ST还有一个本地化的中文网站:
https://www.stmcu.com.cn/
ST本地官网中有大量中文文档、实战资料、培训视频等,是中文语境人员入门STM32的一个非常好的地方。
型号选择
STM32系列微处理器型号非常多,对于入门学习来说的话推荐使用 STM32F103
系列和 STM32F4
系列的, STM32F103
系列在国内教程非常丰富, STM32F4
系列教程没有 STM32F103
系列多,但是性能强上不少,开发起来更加便利。
特别的我个人比较喜欢STM32F405RG这颗芯片,速度快、内存大、价格不算贵,用来开发还是蛮爽的,比如MicroPython首选用的就是这颗料,用MicroPython开发单片机也是别有一番感觉。
如果是开发过程中对芯片具体的选型的话可以在官网直接查询,也可以使用ST官方的选型工具 STMCUFinder
,该工具可以分门别类筛选具体型号、查看基本信息、下载文档资料:
STMCUFinder
可以在官网搜索下载(包含windows、android、ios版本):
开发方式
STM32的开发主要指的是通过程序实现功能,ST官方提供的开发方式来说从远及近分别是: 直接读写寄存器
、 标准外设驱动库 SPL
、 硬件抽象层库 HAL库
、 底层库 LL库
。四种开发方式各有优缺点,可以参考ST官方的测试与说明:
总体来看,代码效率与移植性成反比的规律是明显的。但与 Cube HAL 相比, Cube LL 的效率优势还是很明显的,几乎和直接写寄存器的效率相差无几。而且目前 STM32cubeMX 已经开始支持直接生成使用 Cube LL 的工程,对于以后追求效率的开发应用人员来说,非常值得推荐给大家使用。
更多内容可以查看ST官方文档《STM32 库函数性能对比》,下载地址如下:
https://www.stmcu.com.cn/Designresource/design_resource_detail/file/458139/lang/ZH/token/2be385b879d6412614c6adcd9616ef98
直接读写寄存器
开发是最慢的,可移植性最差,基本不推荐使用,只有个别对时间或是内存要求特别高、或者在写操作系统调度器时才需要直接读写寄存器; 标准外设驱动库
是ST最开始提供的库(国内的教程也很多是依据题库出的),现在已经被ST放弃了; HAL库
和 LL库
是近几年推出的库,结合STM32CubeMX使用非常方便, HAL库
性能较差、在STM32系列芯片中可移植性好, LL库
性能好、可移植性差。
目前来说推荐使用 HAL库
主开发,在时间或内存有要求的场合混合使用 LL库
。
开发工具
开发工具主要指两块:STM32CubeMX和具体应用开发编程的工具(IDE)。
STM32CubeMX是一个图形化的用于配置生成STM32系列初始化代码的工具。使用该工具可以直观快速的完成项目的初始化,节省大量的时间。这个工具经过多年的发展目前还是非常好用的,可以直接生成代码给很多IDE用,(虽然也可以不用这个工具手动进行初始布置,但是能省事不是更好么)。STM32CubeMX可以在ST官网搜索下载。
STM32CubeMX有中文的用户手册《STM32CubeMX用于STM32配置和初始化C代码生成》,下载地址如下(文档不是从最新版本翻译的,仅供参考):
https://www.stmcu.com.cn/Designresource/design_resource_detail/file/454999/lang/ZH/token/59f8ce3903a16c6cc354ece119011f63
除上面文档以外还有更多中文文档、培训教程等,可以在ST中文网自行搜索下载。
IDE的话主流的有下面几个:
EWARM(IAR)
MDK-ARM(Keil)
这个是目前国内教程中使用最多的,不过这个并非商用免费的,但学习来说还行(就我来说并不推荐,主要是人性化角度来说太差);SW4STM32
TrueSTUDIO
这个已被ST收购,商用免费的,基于eclipse开发,使用体验比MDK-ARM好多了,虽然国内教程少些,但是我个人觉得花时间去上手这个是值得的(现在有更好的替代品了,见下文) ,该软件可以在ST官网搜索下载;
最近ST官方推出了新的IDE: STM32cubeIDE
,这个其实就是整合了STM32CubeMX和TrueSTUDIO,目前刚推出几个月,可能还存在一些问题,但是照以往经验来看,对于STM32的开发这个工具将会在未来成为主力:
STM32cubeIDE
可以在ST官网搜索下载,包含Win、Mac以及几种Linux发行版的版本,可以参考下面链接:
https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-ides/stm32cubeide.html
程序调试
程序调试的话方法工具蛮多,推荐使用 ST-LINK
,可以买ST官方的 ST-LINK V2
或者 ST-LINK V3
:
也可以买TB上那种十几块的U盘大小的 ST-LINK V2
产品:
两者使用是各有优缺点的:
- ST官方的接口齐全,可以支持SW和SWV方式调试(还有JTAG,没前面两个好用),但是官方的ST-LINK不支持向STM32开发板供电,也就是你还得单独给开发板供电;
- TB上那种便宜的对STM32来说几乎都是只支持SW方式调试的,不支持SWV方式(SWV方式开发者可以向IDE输出调试信息,调试起来更加方便),但是这类模块几乎都可以直接为STM32开发板供电;
如果手头没有仿真器的话也可以通过串口打印运行关键信息等其它方式来进行调试,不过效果可能差点,关键是没法一步步运行追踪。
固件烧录
STM32固件烧录不管是方式还是软件都挺多的,我个人一般通过UART进行烧录,工具的话推荐使用ST官方的 STM32CubeProgrammer
,该工具将几种烧录方式都整合在一个工具中,可以在官网搜索下载:
STM32CubeProgrammer
还拥有中文的软件说明《UM2237_STM32CubeProgrammer软件工具介绍》,下载地址如下:
https://www.stmcu.com.cn/Designresource/design_resource_detail/file/455015/lang/ZH/token/fa8266101a7f73ebffcb51c3beea9bc4
资料说明
STM32开发主要用到下面一些官方资料:
Datasheet
芯片物理方面的数据资料,包含针脚定义、电气特性等,可以在官网或是STMCUFinder对应芯片文档列表下载;Reference manual
芯片参考手册主要介绍内核与外设各个功能模块具体原理、逻辑、参数等,可以在官网或是STMCUFinder对应芯片文档列表下载;User Manual
用户手册,这里主要指直接和编程相关的文档,可以在官网下载。比如使用STM32F4的话可以在官网搜索STM32CubeF4
,点击进入该项目后再点击Resource
条目,该条目下就是相关的文档了,其中User Manual
标签下可以找到描述为Description of STM32F4 HAL and LL drivers
的文档,该文档是HAL
库和LL
库的库函数手册,对于开发来说非常重要。另外在这里也可以找到各种中间件(RTOS、TCP/IP stack、FatFs等)的使用手册。APPLICATION NOTE
应用笔记一般具体介绍某一功能、外设、模块的使用,可以在官网和STMCUFinder中下载;例程
ST官方也是有具体的例程的,比如使用STM32F4的话可以在官网搜索STM32CubeF4
,点击进入该项目后向下滚动页面,在Get Software中可以看到STM32CubeF4
的条目,下载该内容,解压后在其中的Projects文件夹中就是可以应用在对应官方开发板中的例程;其它
其它还有编程手册、勘误手册等,可以根据需求查阅;
总结
这篇文章是对入门开发学习STM32系列微控制器所相关的内容做个梳理,如果有相关单片机开发经验的人员的话基本依据上面内容就可以进行学习开发了,如果没有其它开发经验的话可以买个带教程的开发板套件进行入门学习。
附图一张-STM32开发全家桶:
STM32系列微控制器入门介绍相关推荐
- 使用STM32CubeMX和TrueSTUDIO开发STM32系列微控制器
文章目录 这种方式现在已经不推荐了 关于STM32CubeMX STM32CubeMX介绍 为什么使用STM32CubeMX 下载及安装 关于TrueSTUDIO TrueSTUDIO介绍 为什么使用 ...
- Cortex-M系列微控制器学习资源汇总
原文地址:Cortex-M系列微控制器学习资源汇总 - 知乎 (zhihu.com) 前言: 自己前段时间开始接触基于Cortex-M7架构的STM32微控制器,从零开始摸索了很多,总结了很多资源.本 ...
- 单片机c语言波特率检测,基于MSP430系列微控制器串口通信时的波特率自动检测的实现...
通常微控制器通过串行接口与其它终端进行通信时,两个终端需要通讯波特率一致才能达到准确与可靠的通讯效果,串行波特率的自动检测(ABR)可以解决通信终端的波特率自动匹配问题,从而实现微控制器与PC或其它主 ...
- MSP430系列微控制器简介
内容涉及以下: ●按照所处理的信号,对电子线路的分类 ●数字电路的特点 ●常用数字集成电路器件的种类和特点 ●微控制器(Microcontroller,MCU)的结构 ●德州仪器(TI)公司MSP43 ...
- 嵌入式系统原理及应用《基于ARM Cortex-M3 内核的STM32F103系列微控制器》思维导图
嵌入式系统原理及应用 <基于ARM Cortex-M3 内核的STM32F103系列微控制器>课程思维导图 目录 第一章 嵌入式系统概论 第二章 嵌入式系统开发 第三章 ARM Corte ...
- ARM Cortex-M3相比于ARM其他系列微控制器的优势和特点
注:该文来源于网络,未仔细考证其来源,若有不当,还请知会 ARM Cortex-M3相比于ARM其他系列微控制器,具有以下优势或特点 1. **流水线+分支预测 ARM Cortex-M3与ARM7内 ...
- 基于c语言c8051f系列微控制器原理与应用,基于C语言C8051F系列微控制器原理与应用...
第1章 微控制器的原理 1.1 微控制器与计算机的关系 1.2 微控制器系统简介 1.3 微控制器的发展 1.4 8位机发展的3次技术飞跃 第2章 C8051 F系列单片机结构 2.1 C8051F系 ...
- Docker系列之一:入门介绍
Docker简介 Docker是DotCloud开源的.可以将任何应用包装在Linux container中运行的工具.2013年3月发布首个版本,当前最新版本为1.3.Docker基于Go语言开发, ...
- 基于Cortex-M3内核和STMF03系列微控制器的系统设计与开发
最新文章
- 2018微信年度数据报告:00后最爱表情捂脸哭 80后呲牙笑
- 手把手教你使用koa2
- Failed to load sql modules into the database cluster during PostgreSQL Installation
- java实体类转map_十五道经典面试题-JAVA基础篇
- Java——集合(HashMap与Hashtable的区别)
- 从学习 Paddle 开始学习深度学习
- Android之使用ViewPager实现图片展示(最简单的)
- python自定义函数的关键字_Python3.x中自定义比较函数
- 让多核CPU占用率曲线听你指挥(Windows实现)——《编程之美》1.1学习笔记
- rust里面的柴油桶有什么用_一种柴油桶倒油装置的制作方法
- 产品迭代的节奏怎样适应需求的变化?
- codejock toolkit pro 19.2 for MFC
- Java刘意第八天笔记
- Altium_Designer-原理图库如何添加低电平有效的管脚?
- 四六级英语听力软件测试,英语四六级听力真题库
- 小学班级计算机社团活动章程,小学腾飞电脑小社团活动章程.doc
- js折线图设置y轴刻度_d3.js实现自定义多y轴折线图
- java cookie设置注意事项
- 开场白——第一篇博客
- 什么是证书颁发机构(CA)