文章目录
- [1. 安装 STM32CubeIDE](#1. 安装 STM32CubeIDE)
-
- [1.1 导入项目](#1.1 导入项目)
- [2. CubeIDE 的一些基本概念](#2. CubeIDE 的一些基本概念)
-
- [2.1 CubeIDE 软件库设置](#2.1 CubeIDE 软件库设置)
- [3. C/C++ 场景的界面功能和操作](#3. C/C++ 场景的界面功能和操作)
-
- [3.1 主要视图](#3.1 主要视图)
- [3.2 工具栏功能](#3.2 工具栏功能)
- [3.3 文本编辑器功能和操作](#3.3 文本编辑器功能和操作)
- [4. CubeMX 项目文件组成](#4. CubeMX 项目文件组成)
-
- [4.1 CMSIS 驱动文件](#4.1 CMSIS 驱动文件)
- [4.2 HAL 驱动文件](#4.2 HAL 驱动文件)
- [4.3 用户程序文件](#4.3 用户程序文件)
- [5. 项目管理](#5. 项目管理)
1. 安装 STM32CubeIDE
我设置的安装目录:D:\IDE\ST\STM32CubeIDE_1.19.0
1.1 导入项目
先关闭启动后打开的 Information Center。
- 菜单项:File --> Open Projects from File System

2. CubeIDE 的一些基本概念
-
工作空间(Workspace):一个工作空间对于一个实际目录(F:\workspace_1.19.0),可以放置多个项目(Project)。
-- .metadata 文件夹用于存放工作空间 IDE 的各种配置文件,以及工作空间所管理的项目的信息文件。
-- 切换工作空间:File --> Switch Workspace。
-
项目(Project):项目名称就是文件夹名称(demo_led)。
-- .settings :管理项目信息的子目录。
-- *.ioc文件 :CubeMX 项目文件。
-
视图(View):一些功能子界面,菜单项:Window --> Show View,一些常用的视图如下。
-- Project Explorer:显示项目目录和文件。
-- SFRs:显示MCU 特殊寄存器的内容。
-- Outline:显示一个文件内代码概览,可以显示文件内的函数,宏,类型,变量等各种定义。
-
场景(Perspective):多个视图组成的一种工作界面,一个场景一般对应与一种工作需求,菜单项:Window --> Perspective --> Open Perspective --> Other... 会看到最常用的三种场景。

-- C/C++(default):最常用。
-- Debug:程序调试。
-- Device Configuration Tool:内置 CubeMX 操作界面。
2.1 CubeIDE 软件库设置
- 菜单项:Window --> Preferences

推荐和 CubeMX 一样的设置。 - 注意:每次换新的工作空间,该界面设置都会恢复默认值,需要重新设置。
3. C/C++ 场景的界面功能和操作
3.1 主要视图
- Project Explorer:项目目录文件夹和文件。

- 文本编辑:显示和编辑文本文件。

- Outline:文本编辑中程序的提纲,例如程序中的类型,变量,常量,函数等。

- Console:编译过程和结果信息。

- Problems:编译过程出现的警告,错误等信息,双击可定位到错误的程序行。

3.2 工具栏功能
-
菜单项:Window --> Perspective --> Customize Perspective 自定义场景,设计自己习惯使用的工具栏。
-
Open Element:在整个项目中按关键词搜索。


-
场景切换工具栏按钮:快速切换场景。

3.3 文本编辑器功能和操作
- 菜单项:Window --> Preferences,找到 General\Apperance 可以设置界面主题和编辑器字体。
- 在文本编辑器里:CTRL 和 + 号放大字体,CTRL 和 - 号缩小字体。
- 鼠标指针在某个类型、变量、函数上停留时,会出现悬浮的文本框显示源代码。
- 若要跳转到某个类型、变量、函数的源代码处,鼠标停留加按 F3 键。
4. CubeMX 项目文件组成
4.1 CMSIS 驱动文件
-
具体型号 MCU 相关定义文件

- stm32f407xx.h:所有外设的地址映射和数据结构定义,外设寄存器的定义,用于访问外设寄存器的宏定义。
- stm32f4xx.h:根据项目的编译符号定义,在条件编译中包含具体的 MCU 定义头文件,条件编译符号 STM32F407xx 和 USE_HAL_DRIVER 可以在编译设置中定义,菜单项:Project --> Properties,找到 C/C++ Build\Setting,找到MCU/MPU GCC Compiler\Preprocessor,就可以看到两个预处理符号。


- system_stm32f4xx.h:定义了系统初始化函数 SystemInit(); 这个函数在系统复位之后,main()函数之前调用。
-
ARM 内核驱动文件

4.2 HAL 驱动文件
- STM32F4xx 系列器件的 HAL 驱动程序,\Inc 是头文件,\Src是程序文件,每一种外设有一个基本驱动文件(如:stm32f4xx_hal_gpio.h),有的还有一个扩展驱动文件(如:stm32f4xx_hal_gpio_ex.h)。
- stm32f4xx_hal.h:HAL驱动的宏定义和函数定义,HAL_Init() 初始化 HAL 库,HAL_Delay() 实现 ms 级延时。带有 __weak 修饰符的是弱函数,需要自己重新实现功能。
- stm32f4xx_hal_def.h:HAL 的一些通用定义,包括枚举,宏定义,结构体等,例如:类型 HAL_StatusTypeDef。

- stm32f4xx_hal_cortex.h:关于 cortex 内核的常量,结构体,函数定义,如:中断优先级定义和设置函数等。
4.3 用户程序文件
-
Core 下面的 Inc 和 Src 目录下,每个启用的外设都会生成一个外设初始化程序文件。

- GPIO 初始化程序文件 gpio.h 和 gpio.c,MX_GPIO_Init() GPIO初始化函数。
- stm32f4xx_hal_conf.h:HAL 驱动程序的一些配置,例如:启用 MCU 上哪些外设模块,对 RCC 时钟频率的设置,都是根据 CubeMX 配置自动生成,不需要修改此文件。
- stm32f4xx_it.h:中断服务例程(ISR)定义,SysTick_Handler() 是系统定时器 Systick 的 ISR,系统定时器 Systick 每 1ms 中断一次,HAL_Delay() 依靠它实现 ms 级延时。
- stm32f4xx_hal_msp.c:MSP 程序文件,HAL_MspInit() MSP 初始化函数,针对具体 MCU 的一些初始化工作,对 stm32f4xx_hal.c 中弱函数 __weak void HAL_MspInit(void) 的重新实现。
- system_stm32f4xx.c:实现 SystemInit() 和 SystemCoreClockUpdate() 函数。
- syscalls.c 定义了一些底层函数,sysmem.c 定义了内存管理函数。
- main.h 和 main.c 是主程序。
-
\Startup 目录下的是启动文件,是一个汇编语言程序,MCU 复位后首先执行的程序,初始化堆栈指针 SP 和代码指针 PC,设置中断程序向量表,执行 SystemInit() 函数,再执行主函数 main()。
5. 项目管理
- 一个工作空间可以管理多个项目,建议打开一个,其他的关闭,通过右键 Open Project 或者 Close Project 做到。
- 菜单项:Project --> Clean Project:清理项目构建生成的中间文件和二进制文件。
- 右键点击项目 Refresh(刷新),刷新项目文件。
- 生成 .hex 文件,菜单项:Project --> Properties 打开 C/C++ Build\settings 。
