当怀疑自己的时钟配置有问题时,可以使用MCU的时钟输出引脚配置相应的时钟输出,并用合适的示波器等测试设备测量是否正确。F407支持两个时钟输出引脚PA8和PC9:
7 i" P0 ~. D+ w* a1 u. ~
, q7 R; b9 W1 S$ [& u, W
具体配置如下:' H6 W8 j. c8 h/ r/ e+ m
- void DriverMcoInit(void)* M8 a' N& W& r+ g4 H, G
- {/ D8 {! Q( F2 }4 m& L
- GPIO_InitTypeDef gpioInit;
: f8 M( B- o* a- f; k p& q - EXTI_InitTypeDef extiInit;" x- ^+ ?; z; t- h- k
- NVIC_InitTypeDef nvicInit;5 ^, e. s D' m; F+ j# c4 N& V
- 4 `* Q8 E# \1 e8 s2 Y, V4 f- Z
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOC, ENABLE);
3 L4 z0 n. w/ d( H - 0 S" K( j" Z/ p
- gpioInit.GPIO_Mode = GPIO_Mode_AF ;: @/ ]0 F, V( O2 i% r
- gpioInit.GPIO_OType = GPIO_OType_PP;: o5 G2 W9 R! B1 P
- gpioInit.GPIO_Speed = GPIO_Speed_100MHz;
5 r- m/ B1 n' i7 ~! d+ U -
+ d6 m. o7 O* |! | - gpioInit.GPIO_Pin = GPIO_Pin_8; & t4 S4 y% K8 T1 l
- GPIO_Init(GPIOA, &gpioInit);
; m, ]" |1 z2 M4 s6 P2 e: k# k - RCC_MCO1Config(RCC_MCO1Source_PLLCLK, RCC_MCO1Div_4);
2 k2 G2 N8 b7 A5 R! I4 H -
: o0 c4 p: y+ P2 B0 o! N - gpioInit.GPIO_Pin = GPIO_Pin_9;
8 `7 Z1 {4 Q; S6 H3 w2 P - GPIO_Init(GPIOC, &gpioInit);
* }2 `; o$ G6 K - RCC_MCO2Config(RCC_MCO2Source_HSE, RCC_MCO2Div_1); " e: r* r+ ~, i; i* z# t, h! I
- }
复制代码 配置好后,即可使用示波器在对应的引脚上观察波形,测试频率。
# V0 w$ R/ z; d6 }6 f
& N& w3 }8 |9 u! c0 x
! c" k- y/ ] Z8 C, i5 ]# B$ t" N3 M3 q! O0 a
) ~! z0 @' l- k" }* c9 @/ m3 A" ^好记性不如烂笔头.../ ]: q- F7 C- h8 w
|