STM32CubeMX 新建工程详细步骤

1.MPU/CPU选择

step1: 打开CubeMX 软件, 在主页面上 点击如下按钮,进入芯片选择界面

在这里插入图片描述

step2: 在Part Number Search 栏搜索我们需要用到的芯片型号,比如这里我们选择 STM32F103C8

在这里插入图片描述
在方框1中搜索STM32型号,方框2中会显示该芯片的信息概要,比如型号芯片的 引脚封装,Flash, Ram, IO 数量, 主频等基本信息。
方框3中可以查看该芯片的具体特点和外设, 还可以点击Datasheet 下载数据手册。
确定了芯片型号之后,双击上图中我们选择的芯片,进入工程配置界面。

2.片内外设配置

在工程配置页面中有外设配置,时钟配置,和工程配置。这里我们先讲解如何配置这些片内外设CubeMX STM32所有外设都进行了分类,比如这里的 STM32F103C8T6 的所有外设就被分成了一共6类:系统内核、模拟、定时器、通信、计算、中间件.
在这里插入图片描述
上面的片内外设用户需要根据自己项目的使用情况而进行选择配置,但是对于绝大部分的项目来说 ,都需要配置时钟:

step1 系统内核中的 RCC&SYS 项都必须要进行设置

RCC配置,如果需要用 LSE / HSE 就需要在这进行配置,将HSE配置为Crystal/Ceramic Resonator,LSE为Disable

在这里插入图片描述

SYS配置, 关于 debug 的配置,配置为Serial Wire,以保证STlink连接有效。Timebase Source配置为SysTick,用于HAL库中delay函数的时钟源。

在这里插入图片描述
注意: 若需要使用操作系统如 FreeRTOS,则将Timebase Source配置修改为 TIMER1 - TIMER4中的任一个。
因为操作系统的心跳时钟在 Cortex 内核上的移植都依赖于 SysTick 定时器,这里就会有冲突。

step2 芯片引脚配置

一般根据需要对GPIO口进行相应配置,GPIO可配置为一般输入输出,复用为其他引脚功能等。黄色电源口为默认配置,无需修改。绿色表示配置完成,橙色表示待配置。
GPIO通用输出配置解析:

GPIO output leve
表示上电的默认电平,可配置高或者低
GPIO mode
表示输出模式,可配置为Output Push Pull(推挽输出)或Output Open Drain(开漏输出)
GPIO Pull-up/Pull-down
表示是否上下拉,可配置为上拉或者下拉
Maximum output speed
表示输出速度,对于高速接口需要配置为Very High
User Label
可修改IO口名称,比如可写入LED,把IO口名称变为LED

在这里插入图片描述
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/82f49832f6e6a7437bac5897199b63e9.png

3.时钟配置

选中时钟配置栏,进入时钟配置界面

首先,对单片机的系统时钟源做一个简单的解释,对于STM32来说总共有4个时钟源:
高速外部时钟(HSE),外部时钟源,晶振频率可取范围为4~16MHz,我们一般采用8MHz的晶振。
低速外部时钟(LSE),外部时钟源,主要提供给实时时钟模块,所以一般采用32.768KHz。
高速内部时钟(HSI),由内部RC振荡器产生,频率为8MHz,但不稳定。
低速内部时钟(LSI),由内部RC振荡器产生,也主要提供给实时时钟模块,频率大约为40KHz。
在这里插入图片描述
对于单片机的系统主时钟。我们一般选用高速时钟 HSE或者HSI(系统默认), 上图中时钟配置为 HSE,HSE时钟配置流程主要分为以下几步:
1)HSE直接分频后作为 PLL Source Mux选择器的输入 ,
2)之后通过锁相环 9倍频 后输入到 System Clock Mux
3) System Clock Mux 直接输出得到系统主时钟 SYSCLK 72Mhz
4) SYSCLK 经过分频器得到高速时钟 HCLK (这里分频系数为1 所以HCLK也为72MHZ)
5) HCLK 后面又分为了5条路径

  • a.直接作为 AHB总线时钟,作为 内核,内存,DMA等的时钟
  • b. 分频后作为 Cortex 系统定时器的时钟源
  • c.直接作为 FCLK时钟
  • d.分频后作为 APB1总线的时钟 (包括分频后 作为APB1外设时钟 也叫做PCLK1 , 分频后再倍频作为 APB1总线上定时器的时钟)
  • e.分频后作为 APB2总线的时钟 (包括分频后作为APB2外设时钟 也叫做PCLK2, 分频后再倍频作为APB2总线上定时器的时钟, 以及分频后再分频作为ADC的时钟)

通过上面配置就完成了从 HSE 到 系统主时钟全部过程的配置, 若板子上面没有提供外部高速晶振,我们就只有使用内部高速晶振了,其配置过程的原理也是类似的,这里就不再赘述了。
如果项目中还用到了 RTC,IWDG等外设,那就还需要另外配置低速时钟。至此我们时钟配置也就基本完成了。

4.工程管理器

最后通过工程管理器 Project Manager 来对整个CubeMx工程来进行最后的配置
STM32CubeMX的 Project Manager工程管理器包含:Project 工程管理、Code Generator 代码生成、Advanced Settings 高级设置。

4.1 Project

Project工程管理包含三部分内容:
Projcet Settings工程设置、
Linker Settings堆栈设置、
Mcu and Firmware Package MCU和固件包信息。
在这里插入图片描述

4.1.1 Project Setting

  • A.Project Name:工程名称比如:test.uvprojx,以及对应工程里面目标名称。
  • B.Project Location:工程存放路径这个容易理解。如:E:\STM32cube
  • C.Application Struture:应用程序结构这里包含两个选项:Basic 和 Advanced。Basic:是基础的结构,一般不包含中间件(RTOS、文件系统、USB设备等)。Advanced:相反就是包含中间件,一般针对相对复杂一点的工程。当然,这两种生成的结构都比较基础,一般实际项目都会重新整理一遍软件架构。
  • D.Toolchain Folder Location:工具链文件夹路径这个是根据上面Project Name和Project Location得出来的,用户不能修改。
  • E.Toolchain/IDE:工具链选择·EWARM ,MDK-ARM和TrueSTUDIO,STM32CubeIDE,Makefile等,如果配合使用Keil IDE,此处就选择MDK-ARM。

4.1.2 Linker Setting

在这里插入图片描述
这里的选项一看就明白,主要就是堆和栈大小的设置,默认缺省值:Heap堆为0x200,Stack栈为0x400.

4.1.3 Mcu and Firmware Package (MCU和固件包信息)

这里有三个选项,关于MCU类型和固件包版本信息,一般默认配置。

  • A.Mcu Reference:MCU参考型号这个是根据你选择的MCU型号决定的,用户不能修改。
  • B.Firmware Package Name and Version:固件包名称和版本信息这个容易理解,如:STM32Cube_FW_F1_V1.8.4.
  • C.Use Default Firmware Location:使用默认固件包这里勾选上就会根据系统进行默认匹配固件包,一般建议默认。当然,不勾选,可以自己选择指定固件包。

4.2 Code Generator

在这里插入图片描述
如上图,主要包含四项内容:固件包拷贝、生成文件、HAL设置、模板设置。

4.2.1 STM32Cube Firmware Library Package固件包拷贝

  • 1.Copy all used libraries into the project folder 将所有使用过的库复制到项目文件夹中不管你用,还是没有用到,都拷贝到你工程目录下。这样一来,你工程下文件就比较多,不建议使用。
  • 2.Copy only the necessary library files 只复制必要的库文件。这个相比上一个减少了很多文件。比如你没有使用CAN、SPI…等外设,就不会拷贝相关库文件到你工程下。建议使用此项,这样工程路径改变不影响编译。
  • 3.Add necessary library files as reference in the toolchain project configuration file 在工具链项目配置文件中添加必要的库文件作为参考。这里没有复制HAL库文件,只添加了必要文件(如main.c)。相比上面,没有Drivers相关文件。

4.2.2 Generated files 生成文件

这里可以多选,每项可选择:是or不是。

  • 1.Generate peripheral initialization as a pair of’.c/.h’ files per peripheral 每个外设生成独立的’.c/.h’文件不勾:所有初始化代码都生成在main.c勾选:初始化代码生成在对应的外设文件。 如UART初始化代码生成在uart.c中。建议勾选
  • 2.Backup previously generated files when regenerating 在重新生成时备份以前生成的文件重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。
  • 3.Keep User Code when re-generating 在重新生成时保留用户代码比如:我在main.c中添加了一段代码,重新生成时,会在main.c中保留你之前自己添加的这段代码。注意:前提是这段代码写在规定的位置。也就是BEGIN和END之间。否则同样会删除。建议勾选
  • 4.Delete previously generated files when not re-generated 删除以前生成,但现在没有生成的文件比如:之前生成了spi.c,现在重新配置没有spi.c,则会删除之前的spi.c文件,建议勾选

4.2.3 HAL Settings HAL库设置

  • 1.Set all free pins as analog (to optimize the power consumption) 将所有空闲引脚设置为模拟(以优化功耗)这个做低功耗产品时这个选项有必要勾选。
  • 2.Enable Full Assert 使能所有引脚

4.2.4 Template Settings模板设置

1.Select a template to generate customized code
选择一个模板来生成自定义代码代码自定义生成模板。

第一项和第二项设置好,其他一般默认选项。

4.3 Advanced Settings

目前暂时只有两个选项:驱动选择和调用函数设置
在这里插入图片描述

4.3.1 驱动选择

目前主要就是针对工程中使用到的外设,选择HAL还是LL驱动(参看上图)。 提示:目前有些型号MCU的部分外设没有LL驱动。
注:ST公司提供了一套固件库函数包括ST标准库、LL库和HAL库,ST公司主推HAL库。

  • ST标准库:ST官方首先推出对底层寄存器封装的库,库思想是面向过程的,仅对寄存器进行了一层封装操作,适于初学STM32的人群。
  • LL库:操作底层硬件的库,配合CubeMX开发,适于追求效率需要加快开发周期的人群。(新推出,配合HAL库,可以认为是ST库移植到Cube下的实现。)
  • HAL库:面向对象的,操作抽象层的,经过多层封装对功能进行集成,对硬件要求不高,适于开发应用人群。

4.3.2 调用函数

主要关心后面两个选项:Not Generate Function Call 和 Visibility (Static)。

  • a. Not Generate Function Call不生成函数调用也就是你代码不调用对应初始化函数。比如:你GPIO项勾选Not Generate Function Call,你main.c函数中就不会调用MX_GPIO_Init这个函数。
  • b. Visibility (Static)可见性(静态)这个就是初始化代码声明为static。
    注意:A.有些选项是是默认值,不能修改。如SystemClock_Config配置不声明为ststic.
    B.使用static是配合上面Code Generator代码生成章节中Generated files生成文件使用。如果都生成.c .h独立文件了,就不会生成static了。

5. 生成工程文件

点击红色方框中的Generate Code,在路径E:\STM32cube下就可以生成名为“test”的工程文件夹。
在这里插入图片描述
在这里插入图片描述

参考:https://xw.qq.com/cmsid/20211108A05SFS00

### 使用 STM32CubeMX 创建 STM32F405 工程项目 #### 启动 STM32CubeMX 并创建新工程 启动 STM32CubeMX 应用程序,进入主界面后选择 "New Project" 来创建一个新的工程项目[^1]。 #### 选择目标微控制器 在弹出的新建项目窗口中,在 Part Number 搜索栏内输入 `STM32F405` ,从显示的结果列表里找到确切的目标器件型号并双击选中。这一步骤确保选择了正确的硬件平台作为开发的基础[^4]。 #### 配置时钟树和其他外设 一旦选定 MCU 型号之后,可以通过左侧菜单访问不同的配置选项卡来调整系统的各个部分。对于大多数应用来说,默认的时钟设置可能已经足够;然而如果需要更精确控制性能,则可以进一步优化时钟配置。此外还可以在此阶段启用必要的外设功能,比如 GPIO、UART 或者 SPI 接口等。 #### 设置GPIO端口以实现基本I/O操作 为了验证最小系统工作正常,通常会先尝试简单的 LED 控制实验。此时可以在 Pinout & Configuration 页面下拉找到相应的引脚,并将其模式设定为 GPIO_Output 类型,从而能够通过软件编程驱动外部连接的小灯泡闪烁。 #### 中断和服务例程配置 当涉及到事件触发机制的应用场景时,如按键检测或数据接收处理,就需要开启特定外设关联的中断服务函数。例如要激活 USART2 的发送完成中断,需前往 NVIC (Nested Vectored Interrupt Controller) 表格勾选对应的条目,并适当调节其抢占级别和响应子优先级[^5]。 #### 生成功成代码框架 完成上述所有必要项的选择与定制以后,切换至 Project Manager 标签页指定输出路径以及 IDE/Toolchain 组合形式——这里假设采用的是 STM32CubeIDE 和 GNU ARM Embedded Toolchain 。最后点击 “Generate Code” 即可自动生成初始化源码文件夹结构供后续编辑完善逻辑细节之用[^2]。 ```bash # 进入生成的项目目录 cd YourProjectName_IAR # 如果使用命令行构建则执行如下指令(针对Makefile) make all ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值