# HC32L072 **Repository Path**: uf4/HC32L072 ## Basic Information - **Project Name**: HC32L072 - **Description**: 重构 IAR or MDK 工程到 GUN GCC - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: BMP_INIT - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-16 - **Last Updated**: 2026-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HC32L072 CMake 工程 这是面向 HC32L072(Cortex-M0+)的 GCC/CMake 工程,可在 CLion 中使用 STM32CubeCLT 随附的 ARM GNU Toolchain 和 Ninja 构建。应用入口位于 `User/main.c`。 ## 工程依据 - MCU:HC32L072,Cortex-M0+ - DDL:HC32L07x DDL Rev1.2.0 - Flash:起始地址 `0x00000000`,大小 128 KiB - RAM:起始地址 `0x20000000`,大小 16 KiB - 最小堆:512 B - 最小栈:512 B Flash/RAM 地址和容量与官方 MDK 工程中的 `IROM(0x00000000,0x20000)`、`IRAM(0x20000000,0x4000)` 以及官方 IAR `hc32l07x.icf` 一致。 ## 启动文件 - `startup_hc32l07x.s`:DDL Rev1.2.0 提供的官方 Keil/ARMASM 启动文件,已保留在仓库中用于逐项比对;它使用 `AREA`、`DCD`、`PROC` 等 ARMASM 语法,不能由 GNU assembler 直接编译。 - `startup_hc32l07x_gcc.S`:供本工程使用的 GNU assembler 版本,由 `CMakeLists.txt` 明确加入目标。 `startup_hc32l07x_gcc.S` 不是把官方 `.s` 原样交给 GCC,而是对应的 GNU assembler 实现。它与官方文件使用相同的 Cortex-M 异常表和 32 个 HC32L07x 外部中断入口。复位后它会: 1. 将 Flash 中的 `.data` 初值复制到 RAM; 2. 清零 `.bss`; 3. 将 VTOR 指向 `__Vectors`; 4. 调用 `SystemInit`、C 运行库初始化和 `main`。 链接布局由 `HC32L072_FLASH.ld` 定义。向量表固定在 Flash 起始地址,初始 MSP 使用 RAM 顶端 `0x20004000`。 ## 命令行构建 以下示例使用 STM32CubeCLT 1.16.0: ```powershell $clt = "D:\Program Files\STMicroelectronics\STM32CubeCLT_1.16.0" & "$clt\CMake\bin\cmake.exe" ` -S . ` -B cmake-build-debug ` -G Ninja ` "-DCMAKE_MAKE_PROGRAM=$clt\Ninja\bin\ninja.exe" ` "-DARM_NONE_EABI_GCC=$clt\GNU-tools-for-STM32\bin\arm-none-eabi-gcc.exe" ` "-DARM_NONE_EABI_OBJCOPY=$clt\GNU-tools-for-STM32\bin\arm-none-eabi-objcopy.exe" ` -DCMAKE_BUILD_TYPE=Debug & "$clt\CMake\bin\cmake.exe" ` --build cmake-build-debug ` --target HC32L072 ` -j 14 ``` 成功后在构建目录生成: - `HC32L072.elf` - `HC32L072.hex` - `HC32L072.bin` - `HC32L072.map` ## CLion 配置 在 CLion 的 CMake 配置中选择 Ninja,并添加以下 CMake 选项(路径按本机安装位置调整): ```text -DARM_NONE_EABI_GCC=D:/Program Files/STMicroelectronics/STM32CubeCLT_1.16.0/GNU-tools-for-STM32/bin/arm-none-eabi-gcc.exe -DARM_NONE_EABI_OBJCOPY=D:/Program Files/STMicroelectronics/STM32CubeCLT_1.16.0/GNU-tools-for-STM32/bin/arm-none-eabi-objcopy.exe ``` 如果出现 `loading 'CMakeFiles/rules.ninja'`,说明原构建目录不完整或生成器缓存失效。删除对应的 `cmake-build-*` 目录后,让 CLion 重新加载 CMake;不要把构建目录提交到 Git。 ## 备注 链接时 `_read`、`_write`、`_close` 等未实现警告来自 `nosys.specs`,对当前裸机固件生成没有影响。如果应用需要标准输入输出或文件接口,应提供相应的系统调用实现。