4. SDK 目录结构

本章按 Nsing.N32H49x_Library.1.2.0 的实际文件树说明各目录与文件的作用。文中路径均相对于 SDK 根目录。

4.1 顶层结构

  • 📁 以 / 结尾的为目录
  • 📄 其余为文件
Nsing.N32H49x_Library.1.2.0/
├── .vscode/
│   ├── launch.json
│   ├── settings.json
│   └── tasks.json
├── firmware/
│   ├── CMSIS/
│   ├── n32h49x_algo_lib/
│   ├── n32h49x_std_periph_driver/
│   ├── n32h49x_usbfsd_driver/
│   └── n32h49x_usbhs_driver/
├── jlink/
│   └── flash.jlink
├── middlewares/
│   ├── fat_fs/
│   ├── FreeRTOSv202212.01/
│   └── lwip-2.2.0/
├── projects/
│   └── n32h49x_EVAL/
└── N32H49x Version History.txt
相对路径 作用
firmware/ 固件库:CMSIS 内核与器件支持文件、标准外设驱动库、算法库与 USB 驱动
projects/n32h49x_EVAL/ 评估板工程:板级支持、外设示例与应用工程
middlewares/ 中间件源码:FatFs 文件系统、FreeRTOS 内核与 lwIP 协议栈
jlink/flash.jlink J-Link Commander 下载脚本,供 GCC 工程的 download 目标调用
.vscode/ VS Code 的 GDB 调试、构建任务与编辑器配置
N32H49x Version History.txt SDK 版本记录,逐版本列出新增与修正项

4.2 Firmware 固件库

📁 firmware/CMSIS

core/ 为 Arm CMSIS-Core 头文件,Cortex-M4F 工程使用其中的 core_cm4.h 与 arm_math.h;device/ 为 N32H49x 器件支持文件。

CMSIS/
├── core/
│   ├── arm_common_tables.h
│   ├── arm_const_structs.h
│   ├── arm_math.h
│   ├── cmsis_armcc.h
│   ├── cmsis_armclang.h
│   ├── cmsis_compiler.h
│   ├── cmsis_gcc.h
│   ├── cmsis_iccarm.h
│   ├── cmsis_version.h
│   ├── core_cm4.h
│   └── mpu_armv7.h
└── device/
    ├── startup/
    │   ├── startup_n32h49x.s
    │   ├── startup_n32h49x_EWARM.s
    │   └── startup_n32h49x_gcc.s
    ├── n32h49x.h
    ├── n32h49x_conf.h
    ├── n32h49x_flash.ld
    ├── system_n32h49x.c
    └── system_n32h49x.h
📁 firmware/n32h49x_std_periph_driver

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

n32h49x_std_periph_driver/
├── inc/
│   ├── misc.h
│   ├── n32h49x_adc.h
│   ├── n32h49x_cordic.h
│   ├── n32h49x_crc.h
│   ├── n32h49x_dac.h
│   ├── n32h49x_dbg.h
│   ├── n32h49x_dma.h
│   ├── n32h49x_dsmu.h
│   ├── n32h49x_dvp.h
│   ├── n32h49x_eth.h
│   ├── n32h49x_exti.h
│   ├── n32h49x_fdcan.h
│   ├── n32h49x_femc.h
│   ├── n32h49x_flash.h
│   ├── n32h49x_gpio.h
│   ├── n32h49x_i2c.h
│   ├── n32h49x_iwdg.h
│   ├── n32h49x_lptim.h
│   ├── n32h49x_pwr.h
│   ├── n32h49x_rcc.h
│   ├── n32h49x_rtc.h
│   ├── n32h49x_sdio.h
│   ├── n32h49x_sdram.h
│   ├── n32h49x_spi.h
│   ├── n32h49x_tim.h
│   ├── n32h49x_usart.h
│   ├── n32h49x_vrefbuf.h
│   ├── n32h49x_wwdg.h
│   ├── n32h49x_xspi.h
│   └── n32h49x_xspi_v2.h
└── src/
    ├── misc.c
    ├── n32h49x_adc.c
    ├── n32h49x_cordic.c
    ├── n32h49x_crc.c
    ├── n32h49x_dac.c
    ├── n32h49x_dbg.c
    ├── n32h49x_dma.c
    ├── n32h49x_dsmu.c
    ├── n32h49x_dvp.c
    ├── n32h49x_eth.c
    ├── n32h49x_exti.c
    ├── n32h49x_fdcan.c
    ├── n32h49x_femc.c
    ├── n32h49x_flash.c
    ├── n32h49x_gpio.c
    ├── n32h49x_i2c.c
    ├── n32h49x_iwdg.c
    ├── n32h49x_lptim.c
    ├── n32h49x_pwr.c
    ├── n32h49x_rcc.c
    ├── n32h49x_rtc.c
    ├── n32h49x_sdio.c
    ├── n32h49x_sdram.c
    ├── n32h49x_spi.c
    ├── n32h49x_tim.c
    ├── n32h49x_usart.c
    ├── n32h49x_vrefbuf.c
    ├── n32h49x_wwdg.c
    ├── n32h49x_xspi.c
    └── n32h49x_xspi_v2.c
📁 firmware/n32h49x_algo_lib

算法库,Keil 与 GCC 两套,头文件同名同接口,实现分别为 .lib 与 .a。

n32h49x_algo_lib/
├── gcc/
│   ├── inc/
│   │   ├── n32h49x_aes.h
│   │   ├── n32h49x_algo_common.h
│   │   ├── n32h49x_des.h
│   │   ├── n32h49x_hash.h
│   │   ├── n32h49x_rng.h
│   │   └── n32h49x_sm4.h
│   └── lib/
│       ├── AES.a
│       ├── Common.a
│       ├── DES.a
│       ├── HASH.a
│       ├── RNG.a
│       └── SM4.a
└── keil/
    ├── inc/
    │   ├── n32h49x_aes.h
    │   ├── n32h49x_algo_common.h
    │   ├── n32h49x_des.h
    │   ├── n32h49x_hash.h
    │   ├── n32h49x_rng.h
    │   └── n32h49x_sm4.h
    └── lib/
        ├── n32h49x_aes.lib
        ├── n32h49x_common.lib
        ├── n32h49x_des.lib
        ├── n32h49x_hash.lib
        ├── n32h49x_rng.lib
        └── n32h49x_sm4.lib
📁 firmware/n32h49x_usbfsd_driver

全速设备驱动,inc/ 9 个头文件、src/ 6 个实现文件。

n32h49x_usbfsd_driver/
├── inc/
│   ├── usbfsd_core.h
│   ├── usbfsd_def.h
│   ├── usbfsd_init.h
│   ├── usbfsd_int.h
│   ├── usbfsd_lib.h
│   ├── usbfsd_mem.h
│   ├── usbfsd_regs.h
│   ├── usbfsd_sil.h
│   └── usbfsd_type.h
└── src/
    ├── usbfsd_core.c
    ├── usbfsd_init.c
    ├── usbfsd_int.c
    ├── usbfsd_mem.c
    ├── usbfsd_regs.c
    └── usbfsd_sil.c
📁 firmware/n32h49x_usbhs_driver

高速主机/设备驱动,按 driver/(控制器驱动)、device/(设备栈与设备类)与 host/(主机栈与主机类)三层组织。

n32h49x_usbhs_driver/
├── driver/
│   ├── inc/
│   └── src/
├── device/
│   ├── core/
│   └── class/
│       ├── audio/
│       ├── cdc/
│       ├── customhid/
│       ├── hid_cdc_composite/
│       ├── hid_keyboard/
│       ├── hid_msc_composite/
│       ├── mouse/
│       ├── msc/
│       └── msc_cdc_composite/
└── host/
    ├── core/
    └── class/
        ├── CDC/
        ├── HID/
        └── MSC/
相对路径 作用
firmware/CMSIS/device/n32h49x.h 器件头文件:外设寄存器结构、基地址与中断号
firmware/CMSIS/device/system_n32h49x.c 系统时钟初始化;
默认 HSI 经 PLL 输出 240 MHz,PLL 倍频系数须为 8~76 的偶数
firmware/CMSIS/device/n32h49x_conf.h 汇总包含全部驱动头文件,并定义 assert_param
firmware/CMSIS/device/startup/startup_n32h49x.s Keil MDK-ARM 启动文件
firmware/CMSIS/device/startup/startup_n32h49x_EWARM.s IAR EWARM 启动文件
firmware/CMSIS/device/startup/startup_n32h49x_gcc.s GCC 启动文件
firmware/CMSIS/device/n32h49x_flash.ld GCC 链接脚本
firmware/n32h49x_std_periph_driver/inc/misc.h NVIC 与 SysTick 配置函数,对应第 5 章的 NVIC 模块
firmware/n32h49x_std_periph_driver/inc/n32h49x_spi.h SPI 与 I2S 共用的驱动头文件
firmware/n32h49x_algo_lib/keil/lib/n32h49x_common.lib 公共算法函数,Keil 版库文件名与头文件 n32h49x_algo_common.h 不同名

4.3 Projects 工程目录

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

📁 projects/n32h49x_EVAL/bsp

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

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

外设示例,按外设分类分目录,共 34 个分类、184 个示例工程。

examples/
├── ADC/
├── ALGO/
├── CORDIC/
├── Cortex-M4F/
├── CRC/
├── DAC/
├── DMA/
├── DSMU/
├── DVP/
├── ETH/
├── EXTI/
├── FDCAN/
├── FEMC/
├── Flash/
├── GPIO/
├── I2C/
├── I2S/
├── IWDG/
├── LPTIM/
├── NVIC/
├── PWR/
├── RCC/
├── RTC/
├── SDIO/
├── SDRAM/
├── SPI/
├── TIM/
├── USART/
├── USBFSD/
├── USBHS/
├── VREFBUF/
├── WWDG/
├── XSPI/
└── XSPI_V2/
📁 projects/n32h49x_EVAL/applications

应用工程,当前只有 GCC_demo 一个,提供 GCC Makefile 构建方式。

applications/
└── GCC_demo/
    ├── GCC/
    │   └── Makefile
    ├── inc/
    │   ├── main.h
    │   └── n32h49x_it.h
    ├── src/
    │   ├── main.c
    │   └── n32h49x_it.c
    └── readme.txt
相对路径 作用
projects/n32h49x_EVAL/bsp/inc/bsp_eval.h 两块评估板的 LED1~LED3、KEY1~KEY3、WKUP 按键与 USB VBUS 的端口、引脚、时钟与有效电平宏,由 DEMO_BOARD 选择
projects/n32h49x_EVAL/bsp/src/log.c 日志串口初始化 log_init:USART1,TX 为 PA9、RX 为 PA10,115200-8-N-1
projects/n32h49x_EVAL/bsp/inc/log.h log_info、log_warning、log_error、log_debug 宏,由 LOG_ENABLE 与 LOG_LEVEL 控制输出
projects/n32h49x_EVAL/bsp/inc/delay.h SysTick 延时函数 SysTick_Delay_Us、SysTick_Delay_Ms
projects/n32h49x_EVAL/bsp/src/print_remap.c 标准输入输出重定向函数 _write、_read
projects/n32h49x_EVAL/bsp/src/bsp_eval.c 按键状态读取与 LED 控制等板级辅助函数
projects/n32h49x_EVAL/examples/ 34 个外设分类的示例工程,每个示例含 Keil 与 IAR 两套工程
projects/n32h49x_EVAL/applications/GCC_demo/ LED 闪烁的 GCC 工程:Makefile 定义 n32h49x 目标平台,使用 startup_n32h49x_gcc.s 与 n32h49x_flash.ld,提供 all、clean、download、debug 目标

4.4 单个示例的标准结构

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

LedBlink/
├── EWARM/
│   ├── LedBlink.ewd
│   ├── LedBlink.ewp
│   └── LedBlink.eww
├── inc/
│   ├── main.h
│   └── n32h49x_it.h
├── MDK-ARM/
│   ├── LedBlink.uvoptx
│   └── LedBlink.uvprojx
├── src/
│   ├── main.c
│   └── n32h49x_it.c
└── readme.txt
相对路径 作用
src/main.c 示例主程序:外设初始化与主循环
src/n32h49x_it.c 中断服务函数
inc/main.h、inc/n32h49x_it.h 示例头文件与中断函数声明
MDK-ARM/LedBlink.uvprojx Keil 工程,目标名 N32H49X,器件 N32H497xG,编译宏 N32H49X 与 USE_STDPERIPH_DRIVER,ROM 起始 0x08000000 长度 0x100000、RAM 起始 0x20000000 长度 0x90000
EWARM/LedBlink.eww IAR 工作区,配置名同为 N32H49X,链接文件取自工具链目录的 N32H497xG.icf,启动文件使用 startup_n32h49x_EWARM.s
readme.txt 中英文说明:功能说明、使用环境、使用说明(系统时钟与 I/O 配置、测试步骤与现象)、注意事项

全部示例的 MDK-ARM 工程文件都命名为 <示例名>.uvprojx / <示例名>.uvoptx,EWARM 工程命名为 <示例名>.eww / <示例名>.ewp / <示例名>.ewd,示例目录中没有 GCC 工程。以下情况与标准结构不同:

情况 示例 结构
分组子工程 USART/485/、USART/LIN/、USART/IrDA_Tx&Rx/、USBHS/USBHS_Device/、USBHS/USBHS_Host/、USBHS/USBHS_Dual_Role/ 父目录只作分组,不含工程;
子工程各自带 readme.txt、src/、inc/、MDK-ARM/、EWARM/,分别计数
分组下的工程命名 USBHS/USBHS_Device/ 与 USBHS/USBHS_Host/ 的子工程 工程文件统一命名为 project.uvprojx 与 project.eww,与目录名不同
辅助源文件 USART/LIN/LIN_Master/、USART/IrDA_Tx&Rx/Transmit_Receive/、USBHS/USBHS_Device/CDC/ src/ 与 inc/ 中另有 lin_master.c、bsp_Tim_38K.c、usbd_cdc_core.c 等辅助实现与配置头文件

示例工程通过相对路径引用 firmware/ 与 bsp/,复制示例时保持其在 projects/n32h49x_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 构建任务,在工作目录 projects/n32h49x_EVAL/applications/GCC_demo/GCC 执行 make debug
.vscode/settings.json 编辑器设置与文件关联(n32h49x.h、n32h49x_flash.h 关联为 C 文件)
projects/n32h49x_EVAL/applications/GCC_demo/GCC/Makefile GCC 构建脚本:all 生成 build/output.elf、.hex、.bin;
download 调用 JLink.exe 以 -device N32H497xG -if SWD 执行 jlink/flash.jlink;
debug 启动 JLinkGDBServer.exe

SDK 资料包在 SDK 根目录之外还提供以下开发支持文件,其官网版本见“资料与工具导航”一章:

资源 作用
KEIL PACK 包 Keil 支持包:.pack 安装文件、.pdsc 器件描述、Flash 编程算法与 .svd 文件
IAR 型号补丁 将 Nations 器件描述加入 IAR 工具链,安装后 N32H497xG.icf 等链接文件位于工具链的 config/linker/Nsing/N32H49x/ 目录
J-Link 型号补丁包 J-Link 器件描述文件,使 J-Link 识别 N32H497xG 等型号
Flash 编程算法源代码工程 Keil 与 IAR 的 Flash 编程算法源工程,可自行编译生成 .FLM 文件
NSLink 与量产工具 在线/离线量产下载工具
国民技术开发套件文档中心

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

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