【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 。

相关推荐
来自晴朗的明天12 分钟前
14、光耦隔离电路(EL3H7)
单片机·嵌入式硬件·硬件工程
G***技13 分钟前
杰和IB3-272:以低功耗高性能打造新一代工业智能交互核心
单片机·嵌入式硬件·物联网
czhaii1 小时前
STC AI8052U单片机特点
单片机
MAR-Sky2 小时前
keil5中数据的不同定义和单片机(以stc8为例)里的对应关系(idata,xdata,data,code)
单片机·嵌入式硬件
项目題供诗3 小时前
51单片机入门(八)
单片机·嵌入式硬件·51单片机
羽获飞4 小时前
从零开始学嵌入式之STM32——9.STM32的时钟系统
stm32·单片机·嵌入式硬件
来自晴朗的明天5 小时前
13、NMOS 电源防反接电路
单片机·嵌入式硬件·硬件工程
芯岭技术6 小时前
PY32MD310单片机:高性能、低功耗的32位电机控制微控制器
单片机·嵌入式硬件
wotaifuzao7 小时前
STM32 + FreeRTOS 的订阅通知组件架构
stm32·嵌入式硬件·架构·freertos·事件驱动·嵌入式架构
小龙报7 小时前
【51单片机】深度解析 51 串口 UART:原理、配置、收发实现与工程化应用全总结
c语言·开发语言·c++·stm32·单片机·嵌入式硬件·51单片机