STM32 CubeMx教程 -- 基础知识及配置使用教程

文章已获作者授权转载,版权归原作者所有,如有侵权,与本账号无关,可联系删除。 原文作者:Dir_xr

前言

STM32CubeMX 简介

STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者,允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片。

在CubeMX上,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IAR For ARM、TrueStudio等 省去了我们配置各种外设的时间,大大的节省了时间。

并且随着 ST停止了标准库的更新ST官方大力推荐CubeMX与HAL库的使用,虽然现在还是标准库的主场,但是CubeMX的使用率在逐年提高。

关于STM32CubeMx的安装教程,可以参考其他博主的博客,在这里不进行讲述,注意英文路径即可

本文将讲述 STM32Cube MX的界面介绍、基础设置配置、配置之后的简单使用,不同外设的使用将会在之后博客中详细介绍。


1 STM32CubeMx 界面介绍

首先先看一下STM32CubeMx 的主界面

主界面
新建工程一般选择中间的 ACCESS TO MCU SELECTOR,如果有其他需求也可以选择其他的。

1.1 File 界面

FIle

1.2 Windows 界面

Windows

1.3 Help 界面

Help

1.4 Updater Settings 界面

Upadater Settings


2 STM32CubeMx 使用教程

2.1 新建工程

首先新建工程,这里选择使用第一种新建工程的方式

新建工程

如果芯片信息没有更新,会跳出更新界面,继续更新和跳过更新都行,接下来进入选择芯片界面。

芯片选择
在(1)位置输入想要使用的芯片型号,在(2)位置选择详细的芯片类型,最后在(3)位置开始建立一个工程

创建完成之后进入下一个界面

配置界面
在这个界面中有三个部分:
(1)是MCU的外设选择界面,在这里选择使用的MCU外设资源
有两种排序方式: Categories 种类选择A-Z 顺序选择
(2)是详细的外设配置界面,关于每个外设的详细参数都在这里配置
(3)是芯片设置预览界面,预览每个引脚在什么位置和配置了什么功能

另外 配置引脚相应的功能可以在(1)外设选择界面,也可以在(3)预览界面直接点击相应的引脚进行配置

例如想配置PC13引脚输出高电平,可以直接在(3)界面点击PC13引脚
配置引脚

由上图可知,PC13引脚可以配置为RTC时钟模式、输入模式、输出模式、以及中断模式等等,详细功能会在之后博客中介绍。

VDD

另外在配置界面,出现淡黄色表示为不可配置引脚,电源专用引脚以淡黄色突出显示。其引脚不可进行其他用途配置。

配置

这种颜色表示配置了一个I/O口的功能,但是没有初始化相对应的外设功能 ,引脚处于no mode 状态,也就是引脚进行了资源分配,但是在详细配置界面没有初始化操作。

配置
如果配置完成之后显示绿色,则表示配置成功。

接下来介绍一些工程中通用的配置操作:

2.2 配置RCC时钟参数

RCC配置
将外部高速时钟(HSE)配置为Crystal/Ceramic Resonator(晶体/陶瓷谐振器),也就是使用外部晶振作为时钟源,外部低速时钟(LSE)用不到,可以不配置。
如果不配置RCC时钟,则是默认使用内部高速时钟(HSI),这也将影响之后时钟树的配置。
推荐将RCC时钟配置外部晶振

2.3 配置SYS参数

SYS

SYS参数

Debug
默认是关闭的,如果不使用调试器关闭即可,即No Debug;
在STM32CubeMX的SYS选项栏中有SW和JTAG协议选项,用户可以根据需要选择相应的协议;

JTAG调试接口(JTAG-DP)需要5个引脚;CubeMX中可选择5pin或4pin的JTAG,5pin比4pin多了一个复位引脚。
SW调试接口(SW-DP)需要2个引脚。二者之间有复用引脚。SW调试端口采用同步串行协议:SWCLK引脚为从主机到从机的时钟信号;SWDIO为双向数据信号。

ST-Link采用的是SW调试接口,选择Serial Wire ;
J-Link采用的是JTAG调试接口,根据实际要求选择 JTAG(4pin) 或者 JTAG(5pin) ;
如果使用J-Link 但是采用SWD协议,也可以选择Trace Asynchronous Sw ;
Trace Asynchronous Sw 模式有时候也可以解决使用ST-Link 烧录之后无法烧录和调试的情况

为了避免一次烧录之后无法下一次烧录或者调试的情况, 推荐选择Serial Wire

如果在STM32CubeMX中选择SW协议MDK 也必须 选择SW协议。JTAG协议配置也同理。否则会造成下载和调试失败。在实际项目中SW协议使用使用的比较多,速度更快,占用的引脚更少,推荐配置成SW协议,即Serial Wire模式;

System Wake-Up
设置低功耗模式下的自动唤醒功能,通过引脚PA0。

Timebase Source
一般指HAL的时基,即HAL库中的uwTick,用于实现HAL_Delay()以及作为各种timeout时钟的基准。一般情况下直接选择默认的Sys Tick(嘀嗒定时器)来维护SYS Timebase Source即可,即直接放在SysTick_Handler()中断服务函数中,也就是下面的HAL_IncTick()函数。

2.4 配置时钟树

时钟树

如果在前面RCC时钟配置中,选择使用外部晶振,在这里选择使用外部高速时钟模式(HSE);如果没有配置RCC时钟,则使用默认的内部高速时钟(HSI);
然后配置PLL锁相环,之后倍频更改系统主时钟;
推荐使用最大时钟频率这里是72M
如果不清楚RCC时钟树,可以参考我之前写的一篇博客,STM32基础知识(三)-- 系统时钟RCC详解

快速配置最大时钟频率可以直接修改(3)系统时钟直接改成72M然后回车就行

2.5 Project(工程设置)

工程设置
注意:项目路径和项目名称最好使用英文,否则后期可能会存在一些奇奇怪怪的错误

2.6 Code Generator(代码生成器)

code generator
Copy all used libraries into the project folder
将HAL库的所有.C和.H都复制到所建工程中
优点:这样如果后续需要新增其他外设又可能不再用STM32CubeMX的时候便会很方便
缺点: 体积大,编译时间相比于其他选项非常长

Copy only the necessary library files
只复制所需要的.C和.H
优点:体积相对小,编译时间短,并且工程可复制拷贝
缺点: 新增外设时需要重新用STM32CubeMX导入

Add necessary library files as reference in the toolchain project configuration file
不复制文件,直接从软件包存放位置导入.C和.H
优点:体积小,比较节约硬盘空间
缺点: 复制到其他电脑上或者软件包位置改变,就需要修改相对应的路径

根据自己需求选择就行,一般来说第一个和第二个都行;

2.7 工程创建

生成工程

code generation

3 结合Keil 的使用教程

首先在上一个界面,打开文件夹和打开工程都可以;
打开工程文件以后,首先点击魔术棒进行设置;
设置
debug
在魔术棒设置界面,进入(1)Debug界面,在(2)位置选择自己使用的下载器,然后进入(3)Settings界面;

setting界面
在Settings界面 ,根据之前在STM32CubeMx里面SYS设置的,进行选择这里使用的SW还是JTAG协议;
注意STM32CubeMx 和 MKD 里面协议要一致,否则无法进行调试

代码书写
code

代码要写在 /* XX CODE BEGIN*/ 和 /* XX CODE END*/ 之间,否则下次再STM32CubeMx里面加东西,再生成工程的时候,就会把不在这个区域里面的代码删掉。


3.1 补充

3.1.2 STM32的三种开发模式

1、STM32能基于寄存器开发,直接对寄存器进行编程。基于寄存器编写的代码简练、执行效率高。但由于 STM32 微控制器的片上外设和寄存器数量太多,这种编程方式移植性差,寄存器编程比较复杂。

2、基于ST官方的固件库进行开发。现在大部分STM32教程教的都是这种库函数开发,如正点原子,野火等。他相比寄存器开发更加简单,不需要记住每个寄存器的地址和名称,只要会调用ST官方封装好的库函数进行编程就可以了。

3、基于STM32CubeMx进行开发,使用的是ST官方新推出的HAL库,可以通过软件内设计好的图形化界面进行配置,软件自动生成生成配置代码,然后我们再在IDE上面代码编写。

3.1.3 单片机的三种烧录模式

ICP:使用SWD接口进行烧录,如J-Link烧录器和J-Flash软件配合使用。
ISP:使用引导程序(Bootload)加上外围UART/USB等接口进行烧录。
IAP:软件自身实现在线电擦除和编程的方法,不使用任何工具。程序通常分成两块,分别为引导程序和应用程序。

原文链接:https://blog.csdn.net/Dir_x/article/details/128846252

在这里插入图片描述

  • 4
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32CubeMX是一款官方开发的集代码生成、配置、调试为一体的IDE,能够快速地生成STM32的初始化代码。对于初学者来说,学习STM32,理解硬件芯片、外设的原理和使用方法,是个非常困难的过程。STM32CubeMX通过简单的配置界面,帮助开发人员自动生成大部分的代码,简化开发流程,大大降低了学习成本,同时也提高了开发效率。 STM32CubeMX的使用方法非常简单,用户只需要通过图形化配置界面设置单片机的型号、系统时钟、时序、外设等参数,就可以自动生成基于HAL库的初始化代码,并根据用户需求生成可用的Makefile文件和工程工程文件等。学习STM32的过程中,STM32CubeMX可以作为一个好的指导和辅助工具,帮助学生理解和掌握硬件原理和操作方法。 值得一提的是,STM32CubeMX的开发者工具不仅仅支持C语言,还支持其他高级语言(例如Python等)的调试,这为开发人员提供了更加多元和完善的开发环境。同时,STM32CubeMX官方文档也非常详细,提供了丰富的应用案例和使用技巧,为学生和开发人员提供了很好的学习和参考材料。 总的来说,STM32CubeMX是初学者学习STM32的好工具,它的使用简单、效率高、功能强大、文档详尽,为初学者减轻了很多“学习STM32”的负担。但需要注意的是,对于复杂的应用场景,需要进一步深入学习和掌握STM32的硬件原理和驱动机制,并深入了解和加强HAL库的代码实现。 ### 回答2: STM32CubeMX是一个图形化的配置工具,用于为STMicroelectronics的STM32微控制器生成硬件初始化代码。利用STM32CubeMX,可以轻松地配置器件并生成基本初始化C代码,以便快速上手、开发、测试和评估STM32产品。因为其方便易用、自动生成初始化代码、支持多种mcu芯片的特性,一经推出就备受欢迎。 为了更好地使用STM32CubeMX,需要熟悉其使用方法和总体架构。首先,使用STM32CubeMX时需要选择芯片系列和型号,然后可以通过可视化界面配置芯片引脚、时钟设置、外设使用等。配置完成后,可以生成或导出代码,并在开发环境中使用此代码进行开发。 此外,学习STM32CubeMX还需要掌握一些基础知识,例如MCU的工作原理、外设的功能和使用方法、时钟的作用和配置等。掌握这些知识可以更深入地理解STM32CubeMX的工作原理,并能更快速地进行产品开发。 另外,STM32CubeMX还提供了大量的Demo和使用案例,这些可以帮助开发者更好的理解使用和实现,对新手学习非常有帮助。 综上所述,STM32CubeMX是一个强大的开发工具,具有方便易用、支持多种芯片、自动生成初始化代码等特点。学习STM32CubeMX需要掌握一些基础知识,如MCU工作原理、外设功能和使用方法、时钟配置等。同时还需通过大量的练习和实践,尝试自己的创新,从而更好的了解和掌握该工具。 ### 回答3: STM32CubeMX是由STMicroelectronics公司开发的一款STM32微控制器的软件配置工具。它能够自动生成C代码,帮助用户快速创建基本的项目模板。此外,STM32CubeMX还可以帮助用户配置STM32微控制器的硬件外设、时钟和电源管理等选项,使得开发者可以更加专注于应用程序的开发。 使用STM32CubeMX的第一步是创建新项目。用户可以选择产品系列、型号和需要使用的软件包。在创建项目后,用户可以开始配置微控制器的硬件外设。STM32CubeMX支持各种常用的硬件外设,包括GPIO,UART,SPI,I2C,ADC等,用户可以自由地配置这些外设,以满足自己的需求。 除了硬件配置外,STM32CubeMX还可以配置微控制器的时钟和电源管理。用户可以通过简单的界面来配置时钟树和电源选项,包括PLL,HSI,LSE,LSE等。配置好之后,STM32CubeMX将自动生成C代码,包括时钟初始化、中断向量表等。 总之,STM32CubeMX是一个非常强大的STM32开发工具,它可以大大简化开发过程,提高开发效率。即使是初学者,也可以通过学习相应的教程和文档,快速上手STM32CubeMX,并开发出卓越的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值