4. SDK 目录结构

本章按 Nsing.N32G41x_Library.1.1.0 的实际文件树说明各目录与文件的作用,只写随包存在的目录与文件。文中路径均相对于 SDK 根目录;器件支持包、量产工具等资料包之外的支持文件归“资料与工具导航”一章。

4.1 顶层结构

  • 📁 以 / 结尾的为目录
  • 📄 其余为文件
Nsing.N32G41x_Library.1.1.0/
├── .vscode/
│   ├── launch.json
│   ├── settings.json
│   └── tasks.json
├── firmware/
│   ├── CMSIS/
│   └── n32g41x_std_periph_driver/
├── jlink/
│   └── flash.jlink
├── Middlewares/
│   └── FreeRTOSv202604.01-LTS/
├── projects/
│   └── n32g41x_EVAL/
└── readme.txt
相对路径 作用
firmware/ 固件库:CMSIS 内核与器件支持文件、标准外设驱动库
Middlewares/ FreeRTOS 内核源码,供 FreeRTOS 示例工程引用
projects/n32g41x_EVAL/ 评估板工程:板级支持、外设示例与应用工程
jlink/flash.jlink J-Link Commander 下载脚本,供 GCC 工程的 download 目标调用
.vscode/ VS Code 的 GDB 调试、构建任务与编辑器配置
readme.txt SDK 版本记录与各版本改动说明

4.2 Firmware 固件库

📁 firmware/CMSIS

core/ 为 Arm CMSIS-Core 头文件,Cortex-M4 工程使用其中的 core_cm4.h;device/ 为 N32G41x 器件支持文件与三套启动文件。

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_n32g41x.s
    │   ├── startup_n32g41x_EWARM.S
    │   └── startup_n32g41x_gcc.s
    ├── n32g41x.h
    ├── n32g41x_conf.h
    ├── n32g41x_flash.ld
    ├── system_n32g41x.c
    └── system_n32g41x.h
📁 firmware/n32g41x_std_periph_driver

标准外设驱动库:inc/ 存放驱动头文件,src/ 存放同名实现文件,每个驱动模块一对。

n32g41x_std_periph_driver/
├── inc/
│   ├── misc.h
│   ├── n32g41x_adc.h
│   ├── n32g41x_can.h
│   ├── n32g41x_comp.h
│   ├── n32g41x_crc.h
│   ├── n32g41x_dbg.h
│   ├── n32g41x_dma.h
│   ├── n32g41x_exti.h
│   ├── n32g41x_flash.h
│   ├── n32g41x_gpio.h
│   ├── n32g41x_i2c.h
│   ├── n32g41x_iwdg.h
│   ├── n32g41x_opamp.h
│   ├── n32g41x_pwr.h
│   ├── n32g41x_rcc.h
│   ├── n32g41x_rtc.h
│   ├── n32g41x_spi.h
│   ├── n32g41x_tim.h
│   ├── n32g41x_usart.h
│   └── n32g41x_wwdg.h
└── src/
    ├── misc.c
    ├── n32g41x_adc.c
    ├── n32g41x_can.c
    ├── n32g41x_comp.c
    ├── n32g41x_crc.c
    ├── n32g41x_dbg.c
    ├── n32g41x_dma.c
    ├── n32g41x_exti.c
    ├── n32g41x_flash.c
    ├── n32g41x_gpio.c
    ├── n32g41x_i2c.c
    ├── n32g41x_iwdg.c
    ├── n32g41x_opamp.c
    ├── n32g41x_pwr.c
    ├── n32g41x_rcc.c
    ├── n32g41x_rtc.c
    ├── n32g41x_spi.c
    ├── n32g41x_tim.c
    ├── n32g41x_usart.c
    └── n32g41x_wwdg.c
相对路径 作用
firmware/CMSIS/device/n32g41x.h 器件头文件:外设寄存器结构、基地址与中断号
firmware/CMSIS/device/system_n32g41x.c 系统时钟初始化;
要求定义 N32G412 或 N32G415 之一,默认 HSI 经 PLL 输出 80 MHz(N32G412)或 96 MHz(N32G415)
firmware/CMSIS/device/system_n32g41x.h SYSCLK_SRC、SYSCLK_FREQ 等系统时钟配置宏与可选档位
firmware/CMSIS/device/n32g41x_conf.h 汇总包含全部驱动头文件,并定义 assert_param
firmware/CMSIS/device/startup/startup_n32g41x.s Keil MDK-ARM 启动文件
firmware/CMSIS/device/startup/startup_n32g41x_EWARM.S IAR EWARM 启动文件
firmware/CMSIS/device/startup/startup_n32g41x_gcc.s GCC 启动文件
firmware/CMSIS/device/n32g41x_flash.ld GCC 链接脚本
firmware/n32g41x_std_periph_driver/inc/misc.h NVIC 与 SysTick 配置函数,对应第 5 章的 NVIC 模块
firmware/n32g41x_std_periph_driver/inc/n32g41x_spi.h SPI 与 I2S 共用的驱动头文件

4.3 Projects 工程目录

projects/ 下只有 n32g41x_EVAL/ 一个评估板工程目录,包含板级支持、外设示例与应用工程三部分。

📁 projects/n32g41x_EVAL/bsp

板级支持代码,示例工程通过 bsp/inc 头文件路径引用。

bsp/
├── inc/
│   ├── delay.h
│   ├── log.h
│   └── n32g41x_stb.h
└── src/
    ├── delay.c
    ├── log.c
    └── print_remap.c
📁 projects/n32g41x_EVAL/examples

外设示例,按外设分类分目录,每个分类下为若干示例工程。

examples/
├── ADC/
├── bxCAN/
├── COMP/
├── Cortex-M4/
├── CRC/
├── DMA/
├── EXTI/
├── Flash/
├── FreeRTOS/
├── GPIO/
├── I2C/
├── I2S/
├── IWDG/
├── NVIC/
├── OPAMP/
├── PWR/
├── RCC/
├── RTC/
├── SPI/
├── TIM/
├── USART/
└── WWDG/
📁 projects/n32g41x_EVAL/applications

应用工程,演示示例目录之外的完整使用场景。

applications/
├── BOOT_As_ExtFLASH/
│   ├── inc/
│   │   ├── main.h
│   │   └── n32g41x_it.h
│   ├── MDK-ARM/
│   │   ├── BOOT_As_ExtFLASH.uvoptx
│   │   └── BOOT_As_ExtFLASH.uvprojx
│   └── src/
│       ├── main.c
│       └── n32g41x_it.c
├── GCC_demo/
│   ├── GCC/
│   │   └── Makefile
│   ├── inc/
│   │   ├── main.h
│   │   └── n32g41x_it.h
│   └── src/
│       ├── main.c
│       └── n32g41x_it.c
└── JumpToBOOT/
    ├── inc/
    │   ├── main.h
    │   └── n32g41x_it.h
    ├── MDK-ARM/
    │   ├── project.uvoptx
    │   └── project.uvprojx
    └── src/
        ├── main.c
        └── n32g41x_it.c
相对路径 作用
projects/n32g41x_EVAL/bsp/inc/n32g41x_stb.h LED1 至 LED3、KEY1 至 KEY3 与 WKUP 按键的端口、引脚、时钟与有效电平宏
projects/n32g41x_EVAL/bsp/src/log.c 日志串口初始化 log_init:USART1,TX 为 PA9、RX 为 PA10,115200 bps
projects/n32g41x_EVAL/bsp/inc/log.h log_info、log_warning、log_error、log_debug 宏,由 LOG_ENABLE 与 LOG_LEVEL 控制输出
projects/n32g41x_EVAL/bsp/inc/delay.h SysTick 延时函数 SysTick_Delay_Us、SysTick_Delay_Ms
projects/n32g41x_EVAL/bsp/src/print_remap.c 标准输入输出重定向函数 _write、_read
projects/n32g41x_EVAL/applications/BOOT_As_ExtFLASH/ 把 BOOT 区域作为扩展 Flash 编程:BOOT 区域处于写保护时按下 PA4 按键经选项字节解除写保护并复位,否则擦除 0x1FFF0000 起的一页、写入数据后逐字校验,结果从日志串口输出;
只提供 Keil 工程
projects/n32g41x_EVAL/applications/GCC_demo/ LED 闪烁的 GCC 工程:Makefile 定义 N32G412,使用 startup_n32g41x_gcc.s 与 n32g41x_flash.ld,提供 all、clean、download、debug 目标
projects/n32g41x_EVAL/applications/JumpToBOOT/ 从应用程序跳转到 BOOT:按下 WKUP 按键后读取 0x1FFF0000 处的栈顶地址与 0x1FFF0004 处的复位向量并跳转;
只提供 Keil 工程

4.4 单个示例的标准结构

每个示例目录包含源码、头文件、Keil 与 IAR 工程以及说明文件。以 examples/GPIO/LedBlink/ 为例:

LedBlink/
├── EWARM/
│   ├── project.ewd
│   ├── project.ewp
│   └── project.eww
├── inc/
│   ├── main.h
│   └── n32g41x_it.h
├── MDK-ARM/
│   ├── project.uvoptx
│   └── project.uvprojx
├── src/
│   ├── main.c
│   └── n32g41x_it.c
└── readme.txt
相对路径 作用
src/main.c 示例主程序:外设初始化与主循环
src/n32g41x_it.c 中断服务函数
inc/main.h、inc/n32g41x_it.h 示例头文件与中断函数声明
MDK-ARM/project.uvprojx Keil 工程,含 N32G412(器件 N32G412RBL7)与 N32G415(器件 N32G415RBL7)两个目标,分别定义同名编译宏与 USE_STDPERIPH_DRIVER
EWARM/project.eww IAR 工作区,含 N32G412 与 N32G415 两个配置
readme.txt 中英文说明:功能说明、使用环境(开发环境与支持芯片)、使用说明(系统配置与使用方法)、注意事项

示例目录中的工程文件统一命名为 project.uvprojx / project.uvoptx 与 project.eww / project.ewp / project.ewd,示例目录中没有 GCC 工程。以下情况与标准结构不同:

情况 示例 结构
成对子工程共用说明文件 SPI/SPI_9Bit/ 父目录放 readme.txt,SPI_9Bit_Master/ 与 SPI_9Bit_Slave/ 各自包含完整的 src/、inc/、MDK-ARM/、EWARM/
共享代码目录 RTC/Common/ 只有 inc/User_RTC_Config.h 与 src/User_RTC_Config.c,没有工程文件
辅助源文件 bxCAN/CAN_LoopBack/、I2C/EEPROM_Polling/、SPI/SPI_FLASH/ src/ 与 inc/ 中另有 can_config.c、i2c_eeprom.c、spi_flash.c 等辅助驱动

示例工程通过相对路径引用 firmware/ 与 bsp/,复制示例时保持其在 projects/n32g41x_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/n32g41x_EVAL/applications/GCC_demo/GCC/Makefile GCC 构建脚本:all 生成 build/output.elf、.hex、.bin;
download 调用 JLink.exe 执行 jlink/flash.jlink;
debug 启动 JLinkGDBServer.exe

以下支持资源不在 SDK 根目录内,需从官网下载中心获取,名称与版本见“资料与工具导航”一章:

资源 作用
Nsingtech.N32G41x_DFP Keil 器件支持包:.pack 安装文件、.pdsc 器件描述、Flash/N32G41x_64.FLM 与 Flash/N32G41x_128.FLM 编程算法、器件寄存器描述文件
N32G41x_Keil_FLASH_Programming_Algorithm Keil Flash 编程算法源代码工程,编译生成上述两个编程算法
Nations_Device_PACK_Add_To_IAR_Tool IAR 型号补丁安装程序,为 IAR 添加 N32G41x 器件型号
JLink_tool_adds_Nations_chip J-Link 型号补丁,为 J-Link 添加 N32G41x 器件型号
国民技术开发套件文档中心

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

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