好的,我看到了您上传的这张 STC32G144K246 系列单片机的系统时钟结构图。下面我基于这张图为您梳理一下该芯片的时钟体系。
一、时钟源(图中左侧三个模块)
1. 内部高速 IRC(上半红框)
- 载入
IRCBAND[1:0] 选择频段,可选 16M / 27M / 44M / 72M 四档,经分频后得到 48M,输出为 HIRC。
- 使能位为
HIRCCR[7],频段选择为 IRCBAND[1:0]。
2. 外部高速晶振 XOSC(左下红框)
- 使能位
XOSCCR[7],输出 48M(EXT48M)。
3. 内部低速 IRC(LIRC)/ 外部 32K 晶振(X32K)
- 外部 32.768kHz 晶振使能位
X32KCR[7];
- 内部低速 IRC 使能位
IRC32KCR[7];
- 两者与 48M 一起经
IRCCLKCR[4:0] 选择,得到 IRC48M。
二、主时钟 MCLK 与系统时钟 SYSCLK
MCLKSEL[1:0] 选择 HIRC / XOSC / IRC48M / …,输出 BASECLK(图中红色标注)。
MCLK2SEL 选择 BASECLK 或 HIR(CLKUSL[3:2]),得到主时钟 MCLK。
- 另有一路经 HIR 滤波器 /2/3... 得到 MCLKODIV[7:0],由
MCLKO_S[7:0] 选择后分别输出到 P5.4 / P1.6(MCLKOCR[7:0] 使能)。
- 主时钟 MCLK 再经
CLKDIV[1:0] 的分频(/1/2/3...),得到 系统时钟 SYSCLK。
- 系统时钟 SYSCLK 供:系统时钟 SYSCLK、CPU/A 时钟、其它外设时钟、IRC48M → USB 时钟。
三、高速外设时钟 HSCLK(右侧)
由 HSI2SCK(HSCLKCR[6:5]) 选择:
- 一路来自 MCLK / HIR / HCLKDIV ;
- 一路来自 HPLL1(
HPLL1CR[7] 使能,HPLLP[V7:0] 为倍频参数);
- 一路来自 HPLL2(
HPLL2CR[7] 使能,HPLL2PD[V7:0] 为倍频参数)。
HPLL1/HPLL2 的输入来自 HPLLCKI(HPLCR[4]) 选择的 BASECLK 或 IRC48M。
HSCLK 再经 HSCLKDIV[1:0] 分频后,供给:
- I2S 时钟(I2S_CLKDIV[7:0] → I2S1/I2S2 时钟)
- PWM 时钟(PWMA/B/C/D/E/F_CLKDIV[7:0] → 对应的 PWM 时钟)
- SPI 时钟(SPI_CLKDIV[7:0] → SPI1/2/3/4 时钟)
- TFPU 时钟(TFPU_CLKDIV[7:0])
四、RTC 与定时器 11 时钟
- RTC 时钟:
RTCCKS(RTCCR[1]) 选择 X32K 或 LIRC。
- 定时器 11 时钟:
T11CS(T11CR[3:2]) 选择 SYSCLK / HIRC / X32K / LIRC。
五、三个独立 IRC 模块(图注)
- 48MHz 频段的 HIRC(一般用作 CPU 时钟源);
- IRC32K(一般用作掉电唤醒定时器时钟源);
- IRC48M(一般用作 USB 专用时钟源)。
如果您是想基于这张图配置某个具体的时钟输出(比如系统主频、PWM 时钟、I2S 时钟),请告诉我具体要实现的时钟频率和用途,我可以帮您给出对应的寄存器配置步骤和代码。另外,若您方便,也可以说明一下具体型号(如 STC32G144K246),我可以进一步查阅对应手册章节核实各寄存器的位定义后再给出配置。
请问您这张图具体是想解决什么问题?
🔍 搜索 "STC 单片机 论坛 帖子"
⏱️ 查找用时 0.8s | 总回答用时 5.6s