软件环境

  • CLion

  • STM32CubeMX

  • MinGW

  • OpenOCD

  • arm-none-eabi-gcc

  • ST-LINK V2驱动

  • J-LINK 驱动

  • USB 串口(CH340)驱动

硬件环境

  • STM32H750VBT6
  • 星光 MINI_STM32H7 开发板
  • ST-Link V2下载器

软件安装

  1. 官方最新版CLion + 破解

  2. STM32CubaMX 【建议版本6.5.0 IDE选SW4STM32】

    安装完成后建议修改 STM32Repository 位置(尽量不要有中文)

    QQ截图20240110144706.png

  3. OpenOCD:OpenOCD是用于对STM32进行下载仿真的工具,是一个开源软件包

    • Windows版本下从这里下载,下载好解压到一个目录就行
  4. MinGW
    Clion需要使用MinGW环境来配置工具链
    MinGW: Minimalist GNU for Windows

    • 下载完成后把Basic Setup里面的组件全部勾选(也可也去掉不需要的语言编译器比如Objective-C)。
  5. Arm-none-eabi-gcc
    Windows下载:https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads ,选择ZIP压缩包形式的

环境配置

配置系统的环境变量,在Path环境变量里面添加

  • MinGW你的路径\MinGW\bin
  • gcc-arm-none-eabi你的路径\gcc-arm-none-eabi-10.3-2021.10\bin

完成后终端验证(有信息则成功)

  • gcc -v
  • arm-none-eabi-gcc -v

CLion设置配置

打开CLion设置 > 构建、执行、部署 > 工具链

  • 建议新建一个新配置并改名为MinGW STM32

  • 详细配置,根据你的MinGW,gcc-arm-none-eabi(gcc,g++,gdb)进行设置

    屏幕截图 2024-03-06 190246.png

  • 返回 CLion设置 > 构建、执行、部署 检查CMake确认一下工具链是否正确

    屏幕截图 2024-03-06 190810.png

  • 进入CLion设置 > 构建、执行、部署 > 嵌入式开发 设置安装完成的STM32CubeMX,OpenOCD路径

    屏幕截图 2024-03-06 191148.png

项目创建

期间弹出的板卡配置选择默认关闭

  1. 使用CLion创建STM32CubeMX项目,会自动生成一个【*.ioc】文件点击打开STM32CubeMX创建项目

  2. 默认生成项目芯片型号是STM32F030F4Px,更改型号为STM32H750VBT6然后确认

    屏幕截图 2024-03-06 192241.png

  3. 直接点击Project Manager

    注意:就是在下面的设置中项目名称和路径一定要和在Clion中建立的一致,这样生成的工程文件才会覆盖Clion中的文件,否则会另外生成一个文件夹

  • 可以注意一下堆栈大小,一般0x200~0x400就够用了

  • 点击Code Generator勾选 Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral

    不勾:所有初始化代码都生成在main.c
    勾选:初始化代码生成在对应的外设文件。 如GPIO初始化代码生成在gpio.c中。

  • 等待代码生成完成,关闭CubeMX,回到Clion,已经重新生成了相关的HAL代码,并设置了对应的型号

  • 在代码的根目录新建config目录并创建配置文件daplink.cfg

    1
    2
    3
    4
    5
    6
    7
    8
    # 选择ST-link
    source [find interface/stlink.cfg]
    # 传输格式
    transport select hla_swd
    # 芯片类型【根据自己需要更改相应的设置】
    source [find target/stm32h7x.cfg]
    # 下载频率 = 10MHz
    adapter speed 10000

项目运行并烧录

  • CLion选择OpenOCD添加一个新的运行配置,调试器选择gdb,配置文件选择刚刚创建的daplink.cfg

    pFrlI5F.png

CLion中组织编译规则都是基于CMakeLists.txt文件

如果熟悉CMake应该会觉得很方便很强大,不熟悉的也没事,基本不需要额外修改什么,只需要知道怎么在这个文件里面添加源码目录和include文件夹的路径就行了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# include目录【*.h】
include_directories(
Core/Inc
UserApp
)

# 源代码文件【*.c】
file(GLOB_RECURSE SOURCES
"startup/*.*"
"Drivers/*.*"
"Core/*.*"
"UserApp/*.*"
"3rdParty/*.*"
)

代码分包建议

CubeMX生成的主函数和初始化相关的文件都在Core文件夹中,为了便于管理自己的项目,我一般会将自己的代码和CubeMX生成的代码解耦,自己创建一个User文件夹,结构如下:

1
2
3
4
5
6
User    # 用户自定义代码
├─BSP # 板级支持包
│ ├─Include # 板级支持包头文件
│ └─Source # 板级支持包源文件
├─Include # 自定义头文件
└─Source # 自定义源文件

关于User文件直接将main.cmain.h移动到User/SourceUser/Include中,随后修改CMakeList,再添加自己需要的代码

另一种则是自己建立main_user.cmain_user.h,分别放入两个文件夹,在main_user.c中定义setup()loop()函数,并在main_user.h中声明,修改CMakeList,将这俩包含进main.h随后填入CubeMX生成的main.c对应位置,随后到这两个函数中实现自己的初始化和主循环逻辑。

–END 至此简单编译运行HAL库代码–