STM32CubeMX教程
本文最后更新于:2024年3月7日 晚上
从这里作为电控学习的起点叭~
简介和安装
STM32CubeMX是一个图形化的工具,也是配置和初始化C代码生成器(STM32 configuration and initialization C code generation),也就是自动生成开发初期关于芯片相关的一些初始化代码。
STM32CubeMX和STM32CubeIDE的区别
- STM32CubeMX 是个图形化配置工具,最大的好处是帮用户生成相应的初始化代码。
- STM32CubeIDE 是编译器,最大的功能是帮助用户编译调试代码,包括 STM32CubeMX 生成的项目代码。STM32CubeIDE 也同时集成了STM32CubeMX工具。
安装方法
Stsp 1: Oracle官方下载
JRE
由于STM32CubeMX软件是基于JAVA环境运行的,所以需要安装JRE才能使用。在官网下载即可:这里是官网下载的地址Step 2:ST官方下载
STM32CubeMX
工具
官网下载HAL库
安装:- STM32 HAL固件库是Hardware Abstraction Layer的缩写,中文名称是:硬件抽象层。HAL库是ST公司为STM32的MCU最新推出的抽象层嵌入式软件,为更方便的实现跨STM32产品的最大可移植性。
- HAL库有在线安装、离线安装两种方式。建议使用在线安装,简单省事;
不同芯片型号对应的HAL库不一样,要分别安装
。 - 在线安装:打开安装好的 STM32CubeMX 软件 点上面
Help -> Manage embedded software packages -> 选择芯片型号 -> “Install Now”
IDE安装:这里选择
Keil MDK5
:
Keil是德国知名软件公司Keil开发的微控制器软件开发平台,是目前ARM内核单片机开发的主流工具。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器在内的完整开发方案,通过一个集成开发环境(uVision)将这些功能组合在一起。-
- 安装注意事项:
1 )安装路径为英文路径(不要是中文路径)。
2 ) 系统用户名不能为中文
3 )多个版本 MDK ( Keil )不要安装在同一目录。
4 ) MDK5 需要加载芯片对应的支持包。
- 安装注意事项:
USB 串口驱动安装
- USB串口的作用:
1 )可以当串口使用。
2 )使USB 串口连接到 STM32 的串口1(STM32
ISP 下载只能是串口 1) ,可用串口下载程序。
3 )可用 USB 供电 - USB 串口驱动芯片型号:
CH340
- 串口下载工具: mcuisp(FlyMcu)
- FlyMcu 模拟仿真软件是一款用于 STM32 芯片 ISP 串口烧录程序的专用工具,免费,且较为非常容易下手,好用便捷。
- 注意:STM32 芯片的 ISP 下载,只能使用
串口1(USART1)
,对应的串口发送接收引脚 PA9、PA10
。不能使用其他串口来代替。 - FlyMcu安装教程
- USB串口的作用:
JLINK驱动安装:安装了驱动之后,就可以在 windows 下配合MDK 进行程序下载和调试。
快速开始(以STM32F407VEST为例)
补充:stm32系列的命名规则:
选择具体型号的芯片
在首页点击ACCESS TO MCU SELECTOR
,搜索选择具体型号的芯片,点击Start Project
- 常用的芯片可以点击收藏起来,不用每次都搜集了。
配置系统核心
选择左侧System Core
:
Step 1: 配置外部时钟 (晶振) 输入
stm32主控芯片的内部是有两个时钟的,分别是内部高速和内部低速,但是一般不会特别精准,所以需要外接时钟电路:
- 外接时钟电路,一般高速晶振的频率是8 MHZ,通过倍频器可以达到72 MHZ。低速晶振的频率是32.768KHZ。
配置好之后,芯片晶振对应的引脚变为绿色。
Step 2: 配置调试引脚
选择SYS
选项 -> Serial Wire
配置好之后,芯片的引脚变为绿色。
- 至于为什么需要配置Serial Wire?
原因是,STM32的GPIO口都是有复用功能。 其中,PA13与PA14都有两种功能 :
PA13可以是JTMS,也可以是SWDIO。STM32默认是JTAG模式,所以PA13默认是JTMS,并不是SWDIO。- 在Debug栏目,选择Serial Wire(SWD模式)之后,PA13是SWDIO,PA14是SWCLK。然后PA15,PB3,PB就只是普通的GPIO。
SWD简介
SWD是Serial Wire Debug的简称,翻译成中文是”串行线调试”。 SWD是ARM目前支持的两种调试端口之一,另一个调试端口叫做JTAG Debug Port,也就是我们常用的J-link上面的调试端口(JTAG模式下)。
基于ARM CoreSight调试构架,SWD可以通过传输数据包来读写芯片的寄存器。SWD是用于访问ARM调试接口的双线协议。它是ARM调试接口规范(ARM Debug Interface Architecture Specification)的一部分,是JTAG的替代品。SWD的物理层由两条线组成:
- SWDIO: 双向数据线
- SWCLK: host驱动的时钟线
详细了解SWD,可以看看这些:
Step 3: 配置时钟分频
点击上方Clock Configuration
修改想要的时钟频率,一般选最大速度。F407最大速度为168Mhz。修改之后软件会自动分频。
基础配置到此结束,接下来就是按照需求配置引脚。
按照需求配置引脚
学会阅读开发手册
学习STM32F407主要下载这几个手册。不光学习STM32需要这类手册,学习FPGA、DSP也是这些类型的手册,熟练查阅和使用这些手册也是电子工程师必备的知识之一。
参考手册(Reference Manual)
对芯片每个外设的具体描述和功能介绍,比如我们要查USART,SPI,DMA相关寄存器和功能的介绍就可以使用这个手册。数据手册(Data Sheet)
在我们要画PCB的时候用到这个手册的情况比较多,这个手册上面有关于这个系列芯片的引脚定义、电气特性、机械封装、料号定义等信息。勘误手册(Errata Sheet)
描述了芯片某些功能的局限性,并给出解决办法。这个手册也比较重要,有时候我们觉得有些地方调试老是出问题,就需要查找一下,看看是否是硬件bug。闪存编程手册(Flash Programming Manual)
芯片的片上Flash操作指南,比如芯片的擦除,编程,闪存读写保护,选项字节信息等。内核编程手册(Cortex-M Programming Manual)
对内核的系统控制块的介绍。这个手册有时候也要用到,比如我们需要了解NVIC和SysTick相关的寄存器,就需要使用这个手册。这个手册可以在ARM官方网站下载,也可以到ST官网下载,区别是ARM官网下载的手册是通用的,而ST的是针对自家芯片做的。有时候在参考手册上面找不到相关寄存器的信息时,就需要用到这个手册。应用笔记
(Application Note)
针对不同应用主题的描述性文档,部分笔记还会有配套的固件例程。应用笔记的重要性不言而喻,很多时候官方对一些应用做出了解决方案,都会以应用笔记的形式发布。用户手册(User Manual)
一般是对某个软件库的说明文档。Cortex-M3/M4权威指南
这也是非常重要的参考资料,了解了内核才能更好的利用M3/M4。
论坛下载地址
查找手册方法
进入ST官方地址,页面上侧中间编辑框输入STM32F407检索,Profucts -> Resources
,下载需要的技术手册的PDF即可。
- ST中文社区,里面的资料全部由ST中国区的人负责更新和整理,包含了所有ST公司的MCU资料,比如:STM32F4最新的芯片文档(参考手册、数据手册、勘误手册、编程手册等)、软件资源(固件库、配置工具、PC软件等)、硬件资源(各种官方评估板)等。
正点原子的教程
程序下载的五种方式
一.JLINK烧录程序
JLINK 是一个兼容 JTAG 的仿真器,可以烧录程序和调试
。
调试 ARM ,需要遵循 ARM 的调试接口协议, JTAG 就是其中的一种。JTAG 是一种国际标准测试协议,也叫 ARM 调试协议。现在多数的高级器件都支持 JTAG 协议,如 DSP 、 FPGA 器件等。
- 需要下载JLINK驱动
JLINK驱动安装教程
硬件连线
烧 STM32 只要用 4 条杜邦线就可以了,和 STM32 ST-LINK Utility 下载连线一样,采用SWD 接口模式。
即:GND接GND,SWDIO接SWDIO(TMS),SWCLK接SWCLK(TCK),3V3接3V3
。
正版ST-link/V2 J-LINK JTAG/SWD引脚定义和注意事项
程序下载
二.使用ch340串口烧录程序
三.使用STLink烧录程序
在Keil中配置ST-Link
- 点击魔术棒:
- 设置“Cortex-M Target Driver Setup”窗口中的“Debug”页面。
- 点击“Debug”。
- 将“Unit”选择为“ST-Link/V2”。
- 将Port设置为“
SW
”。
使用 JTAG 需要占用比 SWD 模式更多的 IO 口,而在开发板上这些 IO 口可能被其他外设用到,可能造成部分外设无法使用。所以在调试的时候,一定要选择 SW 模式。 - 设置数据传输速率。
- 设置“Cortex-M Target Driver Setup”窗口中的“Flash Download”页面
- 点击“Flash Download”。
- 选择“Erase Full Chip”。
- 勾选“Program”、“Verify”、“Reset and Run”。
- 添加“Flash Program Algorithm”,我使用的是STM32F429,所以选择“STM32F4xx Flash”。
- 最后点击“确定”,完成配置。
- 确认一下,“Utilities”页中,“Use Debug Driver”和“Update Target before Debugging”两项已经勾选上。
“Use Debug Driver”指的是选择 ST-Link 来给目标器件的 FLASH 烧录编程。
“Update Target before Debugging”指的是先将程序烧录到 FLASH 上,再开始调试。