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

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

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

配置时钟树

本教程将引导您完成芯片时钟树的配置。时钟树是 MCU 的心脏,决定了 CPU 和外设的工作频率。正确配置时钟树是芯片模板开发中的关键步骤。

概述

McuStudio 提供可视化的时钟树配置工具,您可以通过拖拽和连线的方式,直观地配置芯片内部的时钟网络。时钟树配置支持:

  • 时钟源选择(内部/外部)
  • PLL 倍频和分频配置
  • 系统时钟、AHB、APB 总线时钟分频
  • 实时频率计算和验证
  • 版本管理,供同系列芯片复用

时钟树基本概念

时钟源

时钟源缩写频率范围说明
高速内部振荡器HSI8 MHz芯片内部 RC 振荡器,精度较低
高速外部振荡器HSE4-25 MHz外部晶振,精度高
低速内部振荡器LSI40 kHz用于看门狗和 RTC
低速外部振荡器LSE32.768 kHz外部晶振,用于 RTC

时钟信号路径

HSI/HSE ──→ PLL ──→ SYSCLK ──→ AHB Prescaler ──→ HCLK
                                    │
                                    ├──→ APB1 Prescaler ──→ PCLK1 (最大 36 MHz)
                                    │
                                    └──→ APB2 Prescaler ──→ PCLK2 (最大 72 MHz)

PLL 配置

PLL(锁相环)用于将输入时钟倍频到更高频率:

// PLL 配置参数
{
  PLLSource: 'HSE',         // PLL 输入源:HSI 或 HSE
  PLLMul: '9',              // PLL 倍频系数(2-16)
  PLLDiv: '1',              // PLL 分频系数(可选)
  SYSCLKSource: 'PLLCLK'    // 系统时钟源选择
}

配置步骤

创建时钟树版本

在菜单中点击开发者 >> 时钟树模板 >> 创建模板

create_clock_menu

选择芯片模板工程下面的ips/_CLOCK/ui/系列路径,进入编辑界面

clock_edit_panel

接下来以下面的时钟树进行配置

clock_tree

配置时钟源

时钟树的时钟源有 IRC8M,HXTAL(3-25M),LXTAL(32.768KHz),IRC40K

IRC8M 时钟源配置

IRC8M是内部高速时钟源,固定值8M,这里选择Text节点,拖拽到编辑区,选择节点,在界面右侧的属性面板中填写时钟源的配置参数:

  • 输入ID: 时钟源不需要输入ID
  • 数据ID:时钟源的ID,这里为IRC8M_CLK
  • 标签:界面显示的标签,这里设置为IIRC8M
  • 标签方向:左方
  • 只读:IRC8M为固定频率,设置为只读
  • 禁用:设置为空或者false
  • 值:设置8000000
  • 其他属性:默认

irc8m_node

HXTAL 时钟源配置

HXTAL是外部晶振,频率范围3-25M,这里选择Text节点,拖拽到编辑区,选择节点,在界面右侧的属性面板中填写时钟源的配置参数:

  • 输入ID: 时钟源不需要输入ID
  • 数据ID:时钟源的ID,这里为HXTAL_CLK
  • 标签:界面显示的标签,这里设置为HXTAL
  • 标签方向:左方
  • 只读:外部晶振的频率是可变的,关闭只读
  • 禁用:设置为空或者false
  • 值:设置3000000(建议根据真实情况设置默认频率)
  • 最小输出时钟:3000000
  • 最大输出时钟:25000000
  • 其他属性:默认 hxtal_node

LXTAL 时钟源配置

参考IRC8M的配置

IRC40K 时钟源配置

参考IRC8M的配置

分频配置

IRC8M的2分频

选择Select节点,拖拽到编辑区,选择节点,在界面右侧的属性面板中填写时钟源的配置参数:

  • 输入ID: 选择IRC8M_CLK(也可以直接连接两个节点,会自动选择)
  • 数据ID:IRC8M_CLK_DIV2
  • 标签: 时钟树上没有标签,这里设置为空
  • 只读:该分频是固定2分频,不需要设置,开启只读
  • 禁用:设置为空或者false
  • 值:默认
  • 选项:新增一个选项,设置值和标签(/2)

irc8m_node_div2

切到节点的代码模式,配置节点的算法,设置outclk的内容如下图所示

  • $parent.inclk表示当前节点的输入时钟
  • $parent.selected表示当前选中的选项(options节点)

irc8m_node_div2_code

多路选择器配置

多路选择器有多个输入,一个输出,下面以PLLSEL为例 拖拽Mux节点到编辑区

pllsel_node

倍频器配置

PLL1MF配置

选择Select节点,拖拽到编辑区,选择节点,在界面右侧的属性面板中填写时钟源的配置参数:

  • 输入ID: 选择PREDV1(也可以直接连接两个节点,会自动选择)
  • 数据ID:PLL1MF
  • 标签: 时钟树上没有标签,这里设置为空
  • 只读:该分频是可选的,关闭只读
  • 禁用:设置为空或者false
  • 值:0
  • 选项:根据时钟树的实际选项增加选项

pll1mf_node

输出节点

输出节点一般作为时钟树的最终输出端

USBFS时钟节点

选择Text节点,拖拽到编辑区,按照相关信息配置

ck_usbfs_node

Prev
创建引脚封装
Next
配置 GPIO 外设