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

变量

芯片模板中可用的全局变量和表达式语法。

$root

当前外设实例的根节点。通过 $root 访问该外设的所有参数、模式和子面板:

$root.Mode.value          // 当前外设的 Mode 参数值
$root.BaudRate.value      // 波特率
$root.$name               // 外设实例名,如 'USART1'
$root.enabled()           // 外设是否使能

$clock

时钟树实例。通过节点 ID 访问时钟频率:

$clock['IRC8M'].outclk    // IRC8M 输出频率:8000000
$clock['HXTAL'].outclk    // HXTAL 输出频率
$clock['PLLMF'].outclk    // PLL 倍频后频率
$clock['SYSSEL'].outclk   // 系统时钟选择器输出
$clock['IRC8M'].disabled  // IRC8M 是否禁用

每个时钟节点的属性:

属性说明
outclk输出频率 (Hz)
inclk输入频率 (Hz)
disabled是否禁用
value当前值

$pins

引脚实例。$pins.pins 为芯片所有引脚的数组。

$pins.pins               // 所有引脚数组
$pins.pins[i].name       // 如 'PA0'
$pins.pins[i].port       // 如 'GPIOA'
$pins.pins[i].af         // 复用功能数组 [{name, value}]

$global

所有外设实例的集合。用于跨外设访问:

$global['USART1']            // USART1 外设实例
$global['GPIO'].enabled()    // GPIO 是否使能
$global['ADC0'].Mode.value   // ADC0 的 Mode 值

ip(pre.cjs 专用)

在 ips/{IP}/code/{version}/pre.cjs 中使用,代表当前外设的配置对象:

ip.$name              // 外设实例名
ip.firmware.value     // 固件类型 ('std' | 'hal' | 'll')
ip.DMA                // DMA 面板配置
ip.NVIC               // NVIC 面板配置
ip.function_name.value // 生成的函数名

locals(pre.cjs 专用)

全局上下文对象:

locals.global          // 所有外设函数集合,等同 global
locals.defineMap       // 寄存器宏映射表(common/define.cjs + chip define.cjs)

@get: 表达式

在 ui.cjs 的配置值中使用,实现响应式引用和计算:

// 直接引用
"@get: $root.Mode.value"

// 引用时钟树
"@get: $clock['IRC8M'].outclk"

// 引用其他外设
"@get: USART1.enabled()"

// 条件表达式
"@get: $root.NbrOfConversion.value <= 1"

// 复杂表达式
"@get: parseFloat($parent.selected.label.replace('x', ''))"

// 条件禁用
disabled: "@get: $clock['HXTAL'].disabled"

// 条件可见
visible: "@get: $root.EnableWatchDog.value === true"

@set:

用于将计算结果写回指定路径,配合 @get: 实现双向绑定:

// 选择器的 value 随父级输入值变化
value: "@set: $parent.inclk"

// 根据选项动态设置 semaphore(信号量)
semaphore: "@set: '@get: $parent.value === \"Disable\" ? \"\" : $parent.value'"

// 配合 @get 实现联动赋值
"@set: @get: $root.Mode.value === 'enable' ? $parent.outclk : 0"

@value:

简化版的值获取,直接返回表达式计算结果,不建立响应式依赖:

// 获取计算后的值但不追踪依赖
value: "@value: $parent.inclk * 2"

// 用于需要当前值但不关心后续变化的场景
"@value: $pins.pins.length"
Prev
API 概述
Next
函数