McuStudioMcuStudio
指南
开发者
组件
API
  • 版本发布
指南
开发者
组件
API
  • 版本发布
  • 概述
  • 快速开始
  • 添加厂商的芯片到平台
  • 芯片模板教程

    • 芯片模板开发教程
    • 创建引脚封装
    • 配置时钟树
    • 配置 GPIO 外设
    • 配置 ADC 外设
    • 配置通信外设
    • 配置 TIM 外设
  • 开发参考

    • 框架与规则
    • 芯片包结构
    • 芯片描述
    • 芯片包配置
    • 引脚配置详解
    • 外设配置详解
    • 外设元素参考
    • GPIO 开发参考
    • ADC 开发参考
    • TIM 开发参考
    • 固件库开发指南
    • 版本管理机制
    • Define 映射指南
    • 多语言(i18n)

芯片包配置

芯片包配置通过直接编辑项目文件完成。了解每个配置文件的作用和编写方法是配置芯片包的关键。

概述

芯片包是多个配置文件的集合,定义了芯片的全部特性:基本信息、引脚、外设、时钟树和代码生成模板。新版采用文件驱动的方式,所有配置通过编写 .cjs 文件完成,不再依赖图形化界面。

项目初始化

通过 VSCODE 中的 mcustudio 扩展创建芯片包项目:

  1. 安装 VSCODE 扩展 mcustudio
  2. 使用扩展命令创建芯片包项目
  3. 项目将生成标准的目录结构

配置文件一览

文件位置作用
info.cjschip/{系列}/{型号}/芯片元数据:Flash、RAM、IO 数量、封装、外设列表
pins.cjschip/{系列}/{型号}/引脚复用功能映射
nvic.cjschip/{系列}/{型号}/中断向量表和 IP 关联
dma.cjschip/{系列}/{型号}/DMA 通道分配
ui.cjschip/{系列}/{型号}/芯片级别的 UI 配置
code.cjschip/{系列}/IP 类型到模板版本的映射
define.cjschip/{系列}/寄存器宏定义映射
ide.cjschip/{系列}/IDE 支持配置

芯片型号配置

info.cjs — 芯片元数据

定义芯片的基本属性和外设列表:

module.exports = {
  name: 'GD32F103ZET6',
  series: 'GD32F103XX',
  flash: 512,              // Flash 大小 (KB)
  ram: 64,                 // RAM 大小 (KB)
  io: 112,                 // IO 口数量
  package: 'LQFP144',      // 封装类型
  ips: [                   // 外设列表
    { name: 'ADC', max: 3 },
    { name: 'CAN', max: 1 },
    { name: 'GPIO', max: 1 },
    { name: 'SPI', max: 3 },
    { name: 'TIM', max: 8 },
    { name: 'USART', max: 5 }
  ]
}

pins.cjs — 引脚配置

定义每个引脚的复用功能:

module.exports = [
  {
    name: 'PA0',
    port: 'GPIOA',
    pin: 'GPIO_PIN_0',
    af: [
      { name: 'Reset_State', value: '-1' },
      { name: 'USART1_TX', value: 'GPIO_ALTERNATE_USART1_TX' },
      { name: 'TIM2_CH1', value: 'GPIO_REMAP_TIM2_CH1' }
    ]
  }
]

nvic.cjs — 中断配置

module.exports = {
  ip_names: {
    'USART1_IRQn': 'USART1',
    'TIM2_IRQn': 'TIM2',
    'ADC1_2_IRQn': 'ADC1'
  }
}

系列级配置

code.cjs — IP 版本映射

指定该系列各个外设使用的代码模板版本:

module.exports = {
  ADC: {
    ip_type: 'ADC',
    version: '1.0'
  },
  GPIO: {
    ip_type: 'GPIO',
    version: '1.0'
  }
}

ide.cjs — IDE 配置

module.exports = {
  keil: {
    device: 'GD32F103ZE',
    cpu: 'Cortex-M3'
  },
  cmake: {
    toolchain: 'arm-none-eabi-gcc'
  }
}

外设模板配置

外设的 UI 界面和代码生成逻辑分开配置:

UI 配置 (ips/{IP}/ui/)

以 JavaScript 对象定义外设的配置面板和参数:

// ips/GPIO/ui/gpio_base.cjs
const project = {
  generate_code: { value: true },
  function_name: { value: 'Studio_GPIO_Init' },
  firmware: {
    value: 'std',
    options: [
      { label: 'Standard', value: 'std' },
      { label: 'HAL', value: 'hal' },
      { label: 'LL', value: 'll' }
    ]
  }
}

const parameters = {
  mode: {
    label: 'Mode',
    type: 'select',
    options: [
      { label: 'Output Push-Pull', value: 'OUT_PP' },
      { label: 'Input Floating', value: 'IN_FLOATING' }
    ]
  }
}

module.exports = { project, parameters, functions }

代码模板 (ips/{IP}/code/{version}/)

// ips/GPIO/code/1.0/pre.cjs — 数据预处理
module.exports = ({ ip, locals }) => {
  const ip_pins = locals.global.GPIO.get_ip_gpios([ip.$name])
  Object.assign(ip, ip_pins)
}
<!-- ips/GPIO/code/1.0/std.c.ejs — 代码模板 -->
void <%= ip.function_name.value %>(void) {
<% ip.ports.forEach(port => { %>
  gpio_init(<%= port %>, ...);
<% }) %>
}

版本管理

配置文件以版本号组织,实现跨芯片型号复用:

ips/I2C/code/
├── 1.0/        # 基础版本
├── 2.0/        # 新增 DMA 支持
└── 3.0/        # 优化代码生成

不同芯片型号可选择不同版本:
GD32F103 → I2C code v1.0
GD32F30x → I2C code v2.0

详见 版本管理机制。

构建与发布

# 构建芯片包
npm run build

# 发布到平台
npm run publish

更多参考

  • 芯片包结构 — 完整目录结构说明
  • 芯片描述 — 芯片描述文件格式
  • 芯片模板教程 — 从零开始学配置
Prev
芯片描述
Next
引脚配置详解