配置时钟树
本教程将引导您完成芯片时钟树的配置。时钟树是 MCU 的心脏,决定了 CPU 和外设的工作频率。正确配置时钟树是芯片模板开发中的关键步骤。
概述
McuStudio 提供可视化的时钟树配置工具,您可以通过拖拽和连线的方式,直观地配置芯片内部的时钟网络。时钟树配置支持:
- 时钟源选择(内部/外部)
- PLL 倍频和分频配置
- 系统时钟、AHB、APB 总线时钟分频
- 实时频率计算和验证
- 版本管理,供同系列芯片复用
时钟树基本概念
时钟源
| 时钟源 | 缩写 | 频率范围 | 说明 |
|---|---|---|---|
| 高速内部振荡器 | HSI | 8 MHz | 芯片内部 RC 振荡器,精度较低 |
| 高速外部振荡器 | HSE | 4-25 MHz | 外部晶振,精度高 |
| 低速内部振荡器 | LSI | 40 kHz | 用于看门狗和 RTC |
| 低速外部振荡器 | LSE | 32.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' // 系统时钟源选择
}
配置步骤
创建时钟树版本
在菜单中点击开发者 >> 时钟树模板 >> 创建模板

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

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

配置时钟源
时钟树的时钟源有 IRC8M,HXTAL(3-25M),LXTAL(32.768KHz),IRC40K
IRC8M 时钟源配置
IRC8M是内部高速时钟源,固定值8M,这里选择Text节点,拖拽到编辑区,选择节点,在界面右侧的属性面板中填写时钟源的配置参数:
- 输入ID: 时钟源不需要输入ID
- 数据ID:时钟源的ID,这里为IRC8M_CLK
- 标签:界面显示的标签,这里设置为IIRC8M
- 标签方向:左方
- 只读:IRC8M为固定频率,设置为只读
- 禁用:设置为空或者false
- 值:设置8000000
- 其他属性:默认

HXTAL 时钟源配置
HXTAL是外部晶振,频率范围3-25M,这里选择Text节点,拖拽到编辑区,选择节点,在界面右侧的属性面板中填写时钟源的配置参数:
- 输入ID: 时钟源不需要输入ID
- 数据ID:时钟源的ID,这里为HXTAL_CLK
- 标签:界面显示的标签,这里设置为HXTAL
- 标签方向:左方
- 只读:外部晶振的频率是可变的,关闭只读
- 禁用:设置为空或者false
- 值:设置3000000(建议根据真实情况设置默认频率)
- 最小输出时钟:3000000
- 最大输出时钟:25000000
- 其他属性:默认

LXTAL 时钟源配置
参考IRC8M的配置
IRC40K 时钟源配置
参考IRC8M的配置
分频配置
IRC8M的2分频
选择Select节点,拖拽到编辑区,选择节点,在界面右侧的属性面板中填写时钟源的配置参数:
- 输入ID: 选择IRC8M_CLK(也可以直接连接两个节点,会自动选择)
- 数据ID:IRC8M_CLK_DIV2
- 标签: 时钟树上没有标签,这里设置为空
- 只读:该分频是固定2分频,不需要设置,开启只读
- 禁用:设置为空或者false
- 值:默认
- 选项:新增一个选项,设置值和标签(/2)

切到节点的代码模式,配置节点的算法,设置outclk的内容如下图所示
- $parent.inclk表示当前节点的输入时钟
- $parent.selected表示当前选中的选项(options节点)

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

倍频器配置
PLL1MF配置
选择Select节点,拖拽到编辑区,选择节点,在界面右侧的属性面板中填写时钟源的配置参数:
- 输入ID: 选择PREDV1(也可以直接连接两个节点,会自动选择)
- 数据ID:PLL1MF
- 标签: 时钟树上没有标签,这里设置为空
- 只读:该分频是可选的,关闭只读
- 禁用:设置为空或者false
- 值:0
- 选项:根据时钟树的实际选项增加选项

输出节点
输出节点一般作为时钟树的最终输出端
USBFS时钟节点
选择Text节点,拖拽到编辑区,按照相关信息配置

