G474

B站影视 欧美电影 2025-09-11 21:03 2

摘要:下面用“大白话”给你把 STM32G474 的“家产”和“时钟怎么分”讲明白,照着做就能在 CubeMX 里一次配成,不踩坑。

----

一、先看“家产”——G474 到底有啥

1. CPU:170 MHz Cortex-M4,带 FPU 和 DSP 指令,算力管够。

2. 时钟源:

• 内部 16 MHz HSI(随时能用,精度±1%)。

• 外部 4-48 MHz HSE(要接晶振,精度高)。

• 内部 48 MHz HSI48(给 USB 专用)。

• PLL 可把上面任一源倍频到 170 MHz。

3. 定时器:

• 1 个 HRTIM(480 MHz,10 路 184 ps 分辨率 PWM,做电源/电机神器)。

• 7 个通用 TIM(16/32 位)。

• 1 个低功耗 LPTIM。

4. ADC:5 路 12-bit,最高 4 MSPS,可 5 路并行采样。

5. DAC:2 个 12-bit,每路 1 MSPS,可出 4 路同步(双通道+双 DMA)。

6. 通信:3×I²C、4×SPI/I²S、4×USART、2×CAN-FD、1×USB FS。

7. 数学加速:Cordic(三角函数)、滤波器加速器(FMAC)。

----

二、时钟树“分蛋糕”——CubeMX 里 3 步搞定

目标:CPU 跑满 170 MHz,外设各拿各的口粮,不超标。

Step1 选“厨房”——时钟源

• 板子没晶振:CubeMX “High Speed Clock” 选 HSI。

• 有 8 M 晶振:选 HSE,后面 PLL 倍频更准。

Step2 调 PLL——把 16 M/8 M 变成 170 M

PLL 公式:

PLLCLK = 输入 × (N / M) / R

例:HSE 8 M,配 M=1,N=85,R=2 → 8×85/2 = 340 M,再除以 2 得 170 M。

CubeMX 里直接填:

• PLL Source:HSE

• /M:1

• ×N:85

• /R:2

点一下“Resolve”,CPU Clock 自动变 170 MHz。

Step3 给外设“分桌”——总线分频

• AHB(CPU、DMA、Flash):170 M 不分频 → 170 MHz

• APB1(TIM2-7、USART2/3、I²C1-3):≤170 M,可设 1 分频 → 170 MHz

• APB2(TIM1/8、USART1、SPI1、ADC):同样 1 分频 → 170 MHz

(ADC 内部再 /2 得 85 M,正好低于其最大 100 M)

----

三、外设时钟“个人小灶”——记得单独开火

1. HRTIM:必须勾“HRTIM1”时钟源 → 自动 170 M×2=340 M,计数 480 M 靠内部倍频。

2. ADC:CubeMX 里“ADC Clocked from”选“HSI16”或“SYSCLK”都行,只要最终≤100 M。

3. USB:48 M 必须精准 → 选 HSI48 或 PLLQ=48 M。

4. 低功耗串口 LPUART:时钟源选“LSE 32.768 k”最省电。

----

四、CubeMX 一键操作清单(30 秒版)

1. New Project → 选 STM32G474RETx。

2. Pinout 视图:

• 把要用到的外设打勾(如 HRTIM1、ADC3、USART1)。

3. Clock Configuration:

• Source 选 HSE/HSI → PLL 拉 170 M → APB1/2 全 1 分频。

• 右侧小窗口勾 USB 即自动配 48 M。

4. 每个外设页面再点“Parameter Settings”确认分频:

• ADC:CKMODE=SYSCLK/2 → 85 M。

• HRTIM:DLL 校准 480 M 已自动完成。

5. Project Manager → Generate Code。

生成后 main.c 里已有 SystemClock_Config,直接编译下载即可跑 170 M。

----

五、最容易踩的 3 个坑

1. ADC 超 100 M:忘了 APB2 分频,结果 170 M 直接爆表 → 采样出错。

2. HRTIM 没开时钟:忘记勾“HRTIM1” → 生成代码后定时器不动。

3. USB 48 M 不准:PLLQ 随便填 46 M → PC 端识别设备失败。

----

一句话总结

G474 的时钟就像“170 M 大厨房”,CubeMX 里先选源→PLL 倍到 170→分频给外设,记得把“HRTIM/ADC/USB”这些小灶单独开火,生成代码就能直接开炒,再也不用手算寄存器。祝配置一次成功!

在 STM32G474 里,APB1 和 APB2 都能跑到 170 MHz,一样快——没有“谁更快”的说法。

芯片手册给的最大限制是:

• APB1 ≤ 170 MHz

• APB2 ≤ 170 MHz

所以 CubeMX 里你把两路分频都设成 1 分频,它们就肩并肩 170 MHz 跑;

只是外设座位不同:

座位 常见外设

APB1 TIM2~7、USART2/3、I²C1-3、CAN-FD、DAC

APB2 TIM1/8/20、USART1、SPI1、ADC、HRTIM

结论:速度一样,选座位看外设,别踩“超 170 M”红线即可。

把芯片想成一家公司,资源分三级,你这句话基本把“权力金字塔”说对了,再补一刀就能记死:

1. COU(Cortex-M4 核心) + DDR(SRAM) + Flash

→ 老板 + 财务室 + 档案库,离得最近,谁都绕不开。

2. AHB → APB2(“1”字号头牌)

→ 各部门总监办公室,TIM1、USART1、SPI1、ADC1、HRTIM1 这些“最能赚钱的团队”直接汇报,速度 170 MHz 满格。

3. APB1(“2/3/4”号小弟)

→ 普通工位,TIM2-7、USART2/3、I²C1-3,够用但带宽/功能降一档。

一句话顺口溜:

“老板核心圈,总监住 APB2,小弟坐 APB1。”

配置时钟时先喂饱核心圈,再管总监,最后分小弟,顺序就不会乱。

来源:王者农药精彩击杀

相关推荐