McuStudioMcuStudio
指南
开发者
组件
API
  • 版本发布
指南
开发者
组件
API
  • 版本发布
  • API 概述
  • 变量
  • 函数

函数

芯片模板中可用的 API 函数,按外设分类。

GPIO API

所有 GPIO 函数通过 global.GPIO.{函数名}() 或 GPIO.{函数名}() 调用。

引脚管理

headPeripheralPinAf(pin, af)

手动选择引脚的复用功能。

  • pin: 引脚对象 { name, port, pin, af }
  • af: 复用功能对象 { name, value }

当 af.name === 'Reset_State' 时从 GPIO 表中删除该引脚。如果是唯一复用功能,删除原有绑定后更新。

auto_set_pins(target, name)

系统自动调用的引脚管理函数,函数名不可修改。

  • target: true 启用 → 自动添加空闲引脚;false 禁用 → 删除未锁定引脚
  • name: 复用功能名称,如 'USART1_TX'

addPinByAlternate(alternate)

根据复用功能自动查找空闲引脚并添加到 GPIO 表。

  • 过滤系统引脚(NRST、BOOT0、SWDIO、SWCLK)
  • 按 port 和 num 排序后选择

deletePinByName(pinName)

根据引脚名称删除引脚。pinName 如 'PA0'。

updatePinByAlternate(pin, alternate)

更新引脚的复用功能,标记为 _locked: true。

引脚查询

bindByAlternate(alternate)

判断引脚是否已绑定该复用功能。返回 true/false。

get_gpios_by_af(alternate)

根据复用功能名获取引脚对象数组。支持 'TIM${num}_CH1' 模式匹配。

数据获取

get_ip_gpios(gpioTypes)

获取 GPIO 初始化数据,是代码生成的核心函数。

  • gpioTypes: 类型过滤数组,如 ['USART1', 'EVENTOUT', 'IR', 'MCO']

返回:

{
  has_exti: boolean,    // 是否包含 EXTI 中断
  has_gpio: boolean,    // 是否有 GPIO 引脚
  ports: string[],      // 使用的端口列表
  pins: array,          // 合并后的引脚配置
  pins_des: array,      // 引脚描述(用于注释)
  resetPins: array,     // 需复位的引脚
  setPins: array        // 需置位的引脚
}

内部流程:过滤 → 描述生成 → PORT 分组 → 同配置合并 → EXTI 检测 → 初始化数据生成。

get_gpio_head()

返回 GPIO 表格表头定义,包含 name、mode、speed、level、alternate 列。

参数映射

set_gpio_define_map(defineMap, firmware, pins)

将 UI 参数映射为特定固件的宏定义。

  • defineMap: 合并后的 define 映射表
  • firmware: 'std' | 'hal' | 'll'
  • pins: 引脚数组

其他

get_peripheral_group()

获取外设所属分组。

on__change(params)

配置变化时的回调。params = { id, value, oldValue, path }。path 格式如 'USART1.Parameter.BaudRate'。


DMA API

通过 DMA.{函数名}() 调用。

enabled() → boolean

DMA 使能判断,返回 true。

has_ip_dma(instance) → boolean

检查指定外设实例是否有 DMA 能力(根据 dma.cjs 映射)。

get_ip_dma_ui(instance)

为外设生成 DMA 面板 UI,自动包含该外设可用的 DMA 请求行。

getDMA(ip) → array

获取外设已启用的 DMA 配置(channel 不为空且不为 'Disable')。

get_ip_dmas(ip, defineMap) → array

获取 DMA 配置并将参数映射为固件宏。返回数组每项包含 channel、priority、direction、mode、periph_inc、memory_inc、def(固件宏映射)。

get_mem_dmas() → object

获取 MemToMem 面板中已启用的 DMA 配置。

getTableDMAData(instance_name)

获取指定实例的 DMA 表格数据。

getDMADirectionOptions(type)

获取 DMA 传输方向选项。type 可选 'p2m'、'm2p'、'm2m'。

memToMemAdd({ defaultKey, defaultRow })

向 MemToMem 表格添加一行。

on__change(currentNode)

DMA 配置变化时的回调。


NVIC API

通过 NVIC.{函数名}() 调用。

enabled() → boolean

NVIC 使能判断,始终返回 true。

get_ip_nvic_rows(instance) → string[]

筛选指定外设实例的中断名数组(根据 nvic.cjs 的 ip_names)。

get_ip_nvic_ui_by_instance(instance)

为外设生成 NVIC 面板 UI,自动包含该外设的中断。如果外设有 DMA 配置,自动关联对应的 DMA 中断。

get_enabled_nvics(_global, instance) → array

收集所有外设已启用且不含 DMA 的中断配置。返回 [{ irqn, priority, subpriority, is_multiple }]。

get_ip_nvics(instance) → array

收集外设已启用的中断配置(含 DMA 中断)。

get_ip_nvic_ui(instance, ...rows)

生成外设 NVIC 面板的完整 UI 配置。自动处理 DMA 通道与 DMA 中断的对应关系(如 DMA1_Channel1 → DMA1_Channel1_IRQn)。

get_nvic_table_body()

返回 NVIC 表格体定义。


ADC API

通过 ADC.{函数名}() 调用。

enabled() → boolean

ADC 使能判断。

on__enableChange()

使能状态变化时的回调。

on__change()

配置变化时的回调。


RCU / 时钟 API

通过 RCU.{函数名}() 调用,定义在 ips/_CLOCK/ui/{系列}/data.cjs。

RCU.get_ip_clock(per) → number

根据外设名返回对应的总线时钟频率:

RCU.get_ip_clock('TIM1')   // → CK_TIMER_GROUP1x.outclk
RCU.get_ip_clock('ADC1')   // → CK_ADCx.outclk
RCU.get_ip_clock('SPI1')   // → CK_PCLK2.outclk
RCU.get_ip_clock('USART1') // → CK_PCLK1.outclk

时钟源查询

RCU.clock_hse()   // HXTAL 输出频率
RCU.clock_hsi()   // IRC8M 输出频率
RCU.clock_lse()   // LXTAL 输出频率
RCU.clock_lsi()   // IRC40K 输出频率

状态查询

RCU.pll_enabled()  // PLL 是否作为系统时钟
RCU.hse_enabled()  // HSE 是否使能
RCU.lse_enabled()  // LSE 是否使能
Prev
变量