【STM32】:STM32CubeIDE 的使用

文章目录

  • [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 相关定义文件

    1. stm32f407xx.h:所有外设的地址映射和数据结构定义,外设寄存器的定义,用于访问外设寄存器的宏定义。
    2. stm32f4xx.h:根据项目的编译符号定义,在条件编译中包含具体的 MCU 定义头文件,条件编译符号 STM32F407xx 和 USE_HAL_DRIVER 可以在编译设置中定义,菜单项:Project --> Properties,找到 C/C++ Build\Setting,找到MCU/MPU GCC Compiler\Preprocessor,就可以看到两个预处理符号。
    3. system_stm32f4xx.h:定义了系统初始化函数 SystemInit(); 这个函数在系统复位之后,main()函数之前调用。
  • ARM 内核驱动文件

4.2 HAL 驱动文件

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

4.3 用户程序文件

  • Core 下面的 Inc 和 Src 目录下,每个启用的外设都会生成一个外设初始化程序文件。

    1. GPIO 初始化程序文件 gpio.h 和 gpio.c,MX_GPIO_Init() GPIO初始化函数。
    2. stm32f4xx_hal_conf.h:HAL 驱动程序的一些配置,例如:启用 MCU 上哪些外设模块,对 RCC 时钟频率的设置,都是根据 CubeMX 配置自动生成,不需要修改此文件。
    3. stm32f4xx_it.h:中断服务例程(ISR)定义,SysTick_Handler() 是系统定时器 Systick 的 ISR,系统定时器 Systick 每 1ms 中断一次,HAL_Delay() 依靠它实现 ms 级延时。
    4. stm32f4xx_hal_msp.c:MSP 程序文件,HAL_MspInit() MSP 初始化函数,针对具体 MCU 的一些初始化工作,对 stm32f4xx_hal.c 中弱函数 __weak void HAL_MspInit(void) 的重新实现。
    5. system_stm32f4xx.c:实现 SystemInit() 和 SystemCoreClockUpdate() 函数。
    6. syscalls.c 定义了一些底层函数,sysmem.c 定义了内存管理函数。
    7. 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 。

相关推荐
heisd_13 小时前
嵌入式设备里面写文件通过外部 Flash 来进行
stm32·单片机
idcardwang3 小时前
esp32s3,读取RFID标签里面的数据
单片机
小柯博客4 小时前
从零开始打造 OpenSTLinux 6.6 Yocto 系统 - STM32MP2(基于STM32CubeMX)(五)
stm32·单片机·嵌入式硬件
小熊在忙fpga4 小时前
GD32fRGT6单片机如何printf
单片机·嵌入式硬件
Darken034 小时前
基于单片机STM32的---EXTI外部中断(理论部分)
stm32·单片机·嵌入式硬件·中断系统
清风6666665 小时前
基于单片机的智能自动开关窗系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
IT阳晨。5 小时前
【STM32】矩阵键盘门禁项目(详细注释版)
stm32·嵌入式硬件
SDAU20055 小时前
ESP32C3在Arduino下的串口操作集锦
单片机·嵌入式硬件
沉在嵌入式的鱼5 小时前
STM32--编码器(E6B2-CWZ1X)
stm32·单片机·嵌入式硬件·编码器·e6b2-cwz1x