4. SDK 目录结构
本章按 Nsing.N32G033_Library.1.3.0 的实际文件树说明各目录与文件的作用。文中路径均相对于 SDK 根目录。
4.1 顶层结构
- 📁 以
/结尾的为目录 - 📄 其余为文件
Nsing.N32G033_Library.1.3.0/
├── .vscode/
│ ├── launch.json
│ ├── settings.json
│ └── tasks.json
├── firmware/
│ ├── CMSIS/
│ └── n32g033_std_periph_driver/
├── jlink/
│ └── flash.jlink
├── Middlewares/
│ ├── freertos/
│ └── N32_SelfTest_Library/
├── projects/
│ └── n32g033_EVAL/
└── N32G033 version history.txt
| 相对路径 | 作用 |
|---|---|
firmware/ |
固件库:CMSIS 内核与器件支持文件、标准外设驱动库 |
Middlewares/ |
中间件:FreeRTOS 内核与 N32 自检库 |
projects/n32g033_EVAL/ |
评估板工程:板级支持、外设示例与应用工程 |
jlink/flash.jlink |
J-Link Commander 下载脚本,供 GCC 工程的 download 目标调用 |
.vscode/ |
VS Code 的 GDB 调试、构建任务与编辑器配置 |
N32G033 version history.txt |
SDK 版本记录 |
4.2 Firmware 固件库
📁 firmware/CMSIS
core/ 为 Arm CMSIS-Core 头文件,Cortex-M0 工程使用其中的 core_cm0.h;device/ 为 N32G033 器件支持文件。
CMSIS/
├── core/
│ ├── cmsis_armcc.h
│ ├── cmsis_armclang.h
│ ├── cmsis_armclang_ltm.h
│ ├── cmsis_compiler.h
│ ├── cmsis_gcc.h
│ ├── cmsis_iccarm.h
│ ├── cmsis_version.h
│ ├── core_armv81mml.h
│ ├── core_armv8mbl.h
│ ├── core_armv8mml.h
│ ├── core_cm0.h
│ ├── core_cm0plus.h
│ ├── core_cm1.h
│ ├── core_cm23.h
│ ├── core_cm3.h
│ ├── core_cm33.h
│ ├── core_cm35p.h
│ ├── core_cm4.h
│ ├── core_cm7.h
│ ├── core_sc000.h
│ ├── core_sc300.h
│ ├── mpu_armv7.h
│ ├── mpu_armv8.h
│ └── tz_context.h
└── device/
├── startup/
│ ├── startup_n32g033.s
│ ├── startup_n32g033_EWARM.S
│ ├── startup_n32g033_EWARM_ClassB.S
│ └── startup_n32g033_gcc.s
├── n32g033.h
├── n32g033_conf.h
├── n32g033_flash.ld
├── system_n32g033.c
└── system_n32g033.h
📁 firmware/n32g033_std_periph_driver
标准外设驱动库:inc/ 存放驱动头文件,src/ 存放同名实现文件,每个驱动模块一对。
n32g033_std_periph_driver/
├── inc/
│ ├── misc.h
│ ├── n32g033_adc.h
│ ├── n32g033_comp.h
│ ├── n32g033_dbg.h
│ ├── n32g033_dma.h
│ ├── n32g033_exti.h
│ ├── n32g033_flash.h
│ ├── n32g033_gpio.h
│ ├── n32g033_hdiv.h
│ ├── n32g033_i2c.h
│ ├── n32g033_iwdg.h
│ ├── n32g033_opamp.h
│ ├── n32g033_pwr.h
│ ├── n32g033_rcc.h
│ ├── n32g033_spi.h
│ ├── n32g033_sqrt.h
│ ├── n32g033_tim.h
│ └── n32g033_uart.h
└── src/
├── misc.c
├── n32g033_adc.c
├── n32g033_comp.c
├── n32g033_dbg.c
├── n32g033_dma.c
├── n32g033_exti.c
├── n32g033_flash.c
├── n32g033_gpio.c
├── n32g033_hdiv.c
├── n32g033_i2c.c
├── n32g033_iwdg.c
├── n32g033_opamp.c
├── n32g033_pwr.c
├── n32g033_rcc.c
├── n32g033_spi.c
├── n32g033_sqrt.c
├── n32g033_tim.c
└── n32g033_uart.c
| 相对路径 | 作用 |
|---|---|
firmware/CMSIS/device/n32g033.h |
器件头文件:外设寄存器结构、基地址与中断号 |
firmware/CMSIS/device/system_n32g033.c |
系统时钟初始化; 要求定义 N32G033,默认 HSI 输出 64 MHz,可经 SYSCLK_FREQ 改为 32 MHz 或 32 kHz |
firmware/CMSIS/device/n32g033_conf.h |
汇总包含全部驱动头文件,并定义 assert_param |
firmware/CMSIS/device/startup/startup_n32g033.s |
Keil MDK-ARM 启动文件 |
firmware/CMSIS/device/startup/startup_n32g033_EWARM.S |
IAR EWARM 启动文件 |
firmware/CMSIS/device/startup/startup_n32g033_EWARM_ClassB.S |
IAR EWARM 的 ClassB 自检启动文件,供 applications/ClassB_demo 使用 |
firmware/CMSIS/device/startup/startup_n32g033_gcc.s |
GCC 启动文件 |
firmware/CMSIS/device/n32g033_flash.ld |
GCC 链接脚本 |
firmware/n32g033_std_periph_driver/inc/misc.h |
NVIC 与 SysTick 配置函数,对应第 5 章的 NVIC 模块 |
firmware/n32g033_std_periph_driver/inc/n32g033_hdiv.h |
硬件除法器驱动头文件 |
firmware/n32g033_std_periph_driver/inc/n32g033_sqrt.h |
开根运算加速器驱动头文件 |
4.3 Projects 工程目录
projects/ 下只有 n32g033_EVAL/ 一个评估板工程目录,包含板级支持、外设示例与应用工程三部分。
📁 projects/n32g033_EVAL/bsp
板级支持代码,示例工程通过 bsp/inc 头文件路径引用。
bsp/
├── inc/
│ ├── delay.h
│ └── log.h
└── src/
├── delay.c
├── log.c
└── print_remap.c
📁 projects/n32g033_EVAL/examples
外设示例,按外设分类分目录,每个分类下为若干示例工程。
examples/
├── ADC/
├── COMP/
├── Cortex-M0/
├── DMA/
├── EXTI/
├── FLASH/
├── FreeRTOS/
├── GPIO/
├── HDIV/
├── I2C/
├── IWDG/
├── NVIC/
├── OPAMP/
├── PWR/
├── RCC/
├── SPI/
├── SQRT/
├── TIM/
└── UART/
📁 projects/n32g033_EVAL/applications
应用工程,演示示例目录之外的完整使用场景。
applications/
├── ClassB_demo/
│ ├── EWARM/
│ ├── MDK-ARM/
│ ├── crc32_software.c
│ ├── crc32_software.h
│ ├── main.c
│ ├── main.h
│ ├── n32_cm0_it.c
│ └── n32_cm0_it.h
├── GCC_demo/
│ ├── GCC/
│ │ └── Makefile
│ ├── inc/
│ │ ├── main.h
│ │ └── n32g033_it.h
│ ├── src/
│ │ ├── main.c
│ │ └── n32g033_it.c
│ └── readme.txt
└── JumpToBOOT/
├── MDK-ARM/
│ ├── JumpToBOOT.uvoptx
│ └── JumpToBOOT.uvprojx
├── inc/
│ ├── main.h
│ └── n32g033_it.h
├── src/
│ ├── main.c
│ └── n32g033_it.c
└── readme.txt
| 相对路径 | 作用 |
|---|---|
projects/n32g033_EVAL/bsp/src/log.c |
日志串口初始化 log_init:UART1,TX 为 PA9、RX 为 PA10,115200 bps |
projects/n32g033_EVAL/bsp/inc/log.h |
log_info、log_warning、log_error、log_debug 宏,由 LOG_ENABLE 与 LOG_LEVEL 控制输出 |
projects/n32g033_EVAL/bsp/inc/delay.h |
SysTick 延时函数 SysTick_Delay_Us、SysTick_Delay_Ms |
projects/n32g033_EVAL/bsp/src/print_remap.c |
标准输入输出重定向函数 _write、_read,把 printf 输出接到日志串口 |
projects/n32g033_EVAL/applications/ClassB_demo/ |
ClassB 自检例程:运行 STL_InitRunTimeChecks 与 STL_DoRunTimeChecks,静态资源来自 Middlewares/N32_SelfTest_Library;提供 Keil 与 IAR 工程,Keil 工程附 srecord_crc32.bat 与 SREC/ 下的 srecord 工具 |
projects/n32g033_EVAL/applications/JumpToBOOT/ |
从用户程序跳转到 SYSTEM BOOT:复位后打印提示并停留在用户程序,按下 PA4 按键后跳转到系统存储区; 仅提供 Keil 工程 |
projects/n32g033_EVAL/applications/GCC_demo/ |
LED 闪烁的 GCC 工程:Makefile 定义 N32G033,使用 startup_n32g033_gcc.s 与 n32g033_flash.ld,提供 all、clean、download、debug 目标 |
4.4 单个示例的标准结构
每个示例目录包含源码、头文件、Keil 与 IAR 工程以及说明文件。以 examples/GPIO/LedBlink/ 为例:
LedBlink/
├── EWARM/
│ ├── LedBlink.ewd
│ ├── LedBlink.ewp
│ └── LedBlink.eww
├── inc/
│ ├── main.h
│ └── n32g033_it.h
├── MDK-ARM/
│ ├── LedBlink.uvoptx
│ └── LedBlink.uvprojx
├── src/
│ ├── main.c
│ └── n32g033_it.c
└── readme.txt
| 相对路径 | 作用 |
|---|---|
src/main.c |
示例主程序:外设初始化与主循环 |
src/n32g033_it.c |
中断服务函数 |
inc/main.h、inc/n32g033_it.h |
示例头文件与中断函数声明 |
MDK-ARM/LedBlink.uvprojx |
Keil 工程,定义 N32G033 与 USE_STDPERIPH_DRIVER 编译宏 |
EWARM/LedBlink.eww |
IAR 工作区 |
readme.txt |
中英文说明:功能说明、使用环境(开发环境与支持芯片)、使用说明(系统配置与使用方法)、注意事项 |
全部示例的工程文件均以示例名命名(如 LedBlink.uvprojx、LedBlink.eww),示例目录中没有 GCC 工程。以下情况与标准结构不同:
| 情况 | 示例 | 结构 |
|---|---|---|
| 成对子工程各自带说明文件 | UART/LIN/、UART/IrDA_Tx&Rx/ |
父目录 LIN/ 下为 LIN_Master/ 与 LIN_Slave/,父目录 IrDA_Tx&Rx/ 下为 LP_Transmit_Receive/ 与 Transmit_Receive/,每个子工程各自包含完整的 src/、inc/、MDK-ARM/、EWARM/ 与 readme.txt |
| 辅助源文件 | FreeRTOS/LED_Blink/、I2C/EEPROM/、SPI/SPI_FLASH/、UART/IrDA_Tx&Rx/、UART/LIN/、UART/MultiProcessor/ |
src/ 中另有 led.c、timer.c、i2c_eeprom.c、spi_flash.c、bsp_Tim_38K.c、lin_master.c、lin_slave.c、bsp_key.c、bsp_led.c 等辅助驱动 |
示例工程通过相对路径引用 firmware/ 与 bsp/,复制示例时保持其在 projects/n32g033_EVAL/examples/<分类>/ 下的目录层级,否则需要同步修改工程中的头文件路径与源文件路径。
4.5 开发辅助资源
| 相对路径 | 作用 |
|---|---|
jlink/flash.jlink |
J-Link Commander 脚本:复位、加载 build/output.hex、复位、运行、退出 |
.vscode/launch.json |
gdb-arm 调试配置:使用 arm-none-eabi-gdb 连接 localhost:2331 的 GDB 服务,加载程序、复位并在 main 处设置断点 |
.vscode/tasks.json |
make_debug 构建任务,在 GCC 工程目录执行 make debug |
.vscode/settings.json |
编辑器设置与文件关联 |
projects/n32g033_EVAL/applications/GCC_demo/GCC/Makefile |
GCC 构建脚本:all 生成 build/output.elf、.hex、.bin;download 调用 JLink.exe 指定 N32G033x8 执行 jlink/flash.jlink;debug 启动 JLinkGDBServer.exe |
.vscode/tasks.json 中的工作目录写为 projects/n32g033_EVAL/examples/GPIO/Led_Blink/GCC,与示例目录 projects/n32g033_EVAL/examples/GPIO/LedBlink 不一致;.vscode/launch.json 用固定路径加载 ELF 文件并指定固定的 GCC 工具链路径,Makefile 中的 J-Link 安装路径也是固定值。使用前请按本机环境修改这些路径。
SDK 之外还提供 Keil 支持包、IAR 与 J-Link 型号补丁、Flash 编程算法包与初始化代码生成工具,名称与版本见“资料与工具导航”一章。