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

SDK 之外还提供 Keil 支持包、IAR 与 J-Link 型号补丁、Flash 编程算法包与初始化代码生成工具,名称与版本见“资料与工具导航”一章。

国民技术开发套件文档中心

按芯片系列在线查阅国民技术 MCU 开发套件的芯片资料、SDK、驱动 API 与 Demo 示例说明。

© 2026 国民技术股份有限公司 版权所有粤ICP备11069485号本站使用不含 Cookie 的匿名访问统计