当怀疑自己的时钟配置有问题时,可以使用MCU的时钟输出引脚配置相应的时钟输出,并用合适的示波器等测试设备测量是否正确。F407支持两个时钟输出引脚PA8和PC9:
; ?3 `1 ?: p4 P$ z
! v, F# f' V6 o; U' D 具体配置如下:
/ X3 Z W% p7 w* F5 X3 X* F- void DriverMcoInit(void)
4 |7 }% {( J7 N; u - {4 H; N( j& s' p! m
- GPIO_InitTypeDef gpioInit;
$ k- T( y' m, ?! N+ V - EXTI_InitTypeDef extiInit;
/ ~ O2 H. ]% p0 @1 q0 P6 R3 V+ u - NVIC_InitTypeDef nvicInit;
1 |; V1 m9 g# D' m
2 b. Q# B3 H, `- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOC, ENABLE);
( Q5 }/ d/ Q( v3 g# _ -
( |: f* H. a0 A0 w. A - gpioInit.GPIO_Mode = GPIO_Mode_AF ;: L/ s; [! q# l5 U# }
- gpioInit.GPIO_OType = GPIO_OType_PP;
0 O' ^0 Z+ i/ g! u) z# H) m4 f/ X - gpioInit.GPIO_Speed = GPIO_Speed_100MHz;1 H. j/ T+ G4 q+ W
-
, ]5 e& j3 s7 M - gpioInit.GPIO_Pin = GPIO_Pin_8;
6 ~% q1 |& E$ B - GPIO_Init(GPIOA, &gpioInit);
0 K( K; v1 C* S; X$ o" o - RCC_MCO1Config(RCC_MCO1Source_PLLCLK, RCC_MCO1Div_4);
7 n( w) E. u2 L3 X- h% p -
0 m/ S6 t9 X& Q+ z7 }" X - gpioInit.GPIO_Pin = GPIO_Pin_9;7 c. I5 h; K4 K
- GPIO_Init(GPIOC, &gpioInit);
0 g$ O: r$ r' y% k* _ - RCC_MCO2Config(RCC_MCO2Source_HSE, RCC_MCO2Div_1); * T& ]7 F# }6 W+ ~) L0 m
- }
复制代码 配置好后,即可使用示波器在对应的引脚上观察波形,测试频率。
% Q1 ?9 J8 n& `# [6 ?. L/ |
# y" x. u2 s# M& s* E! E+ h8 Y5 J4 d. z% A8 K
9 w6 p/ z' [. i9 R1 @$ W
k7 X, A9 J+ \% |+ S好记性不如烂笔头...
' |9 {0 R7 ~" v0 p |