MCU为stm32l0系列,时钟配置如下:
- j o1 h' ?8 r9 m/ Y! M9 S) i5 ~8 _
& T: o/ ~" e; Y: M# t- ?8 R
; h) l9 ^! b' u ]+ c4 N* s& b' J3 }6 I: y7 m, [. I
# `" x0 _0 e( A8 W- t. e- //时钟系统配置函数4 [) c; k/ m' Y% }! B
- //SYSCLK=Fs*PLLMUL/PLLDIV;. E8 c% t- e" h0 b0 K( I: s P1 K
- //
* w! q0 r% [3 O, ~ - //Fusb=Fvco/pllq=Fs*(plln/(pllm*pllq));5 C1 [; ^* x/ ~1 Q/ [6 R8 v8 Q9 k
- //SYSCLK =
4 _1 Y% M0 Z9 T& ?4 m - //Fs 8M - ^2 G# a$ V4 o
- //Fvco: 8M3 C% O2 @3 V- M) l% u j! H
- //SYSCLK: 系统时钟频率 8*8/2=32$ C6 f' r! ]7 \& D
- //PLLMUL:倍频 8
: C1 _( r9 o2 |* A) r - //PLLDIV:分频系数 2 5 ?1 W8 ]1 F) T: e( ~; E {
5 K& W; `1 X& J, ]6 W2 S& `, ?/ r- void SystemClockConfig( void )( m; K: y7 E0 n4 F" x
- {9 E6 j9 u# V3 H! l9 ]
- RCC_OscInitTypeDef RCC_OscInitStruct;
/ v6 L7 N/ O, ]+ ^2 H( N: k3 m/ g - RCC_ClkInitTypeDef RCC_ClkInitStruct;
" f: y/ ?4 a1 L8 h
( \1 l6 a! U2 ^- w E8 |- __HAL_RCC_GPIOH_CLK_ENABLE();
* Y7 e% g5 V1 d/ G - __HAL_RCC_PWR_CLK_ENABLE( );
4 x, p# [ ~0 f# R1 v
% M3 h, k2 {2 S8 x! m- l- X- _- __HAL_PWR_VOLTAGESCALING_CONFIG( PWR_REGULATOR_VOLTAGE_SCALE1 );
9 N% I- `9 Q5 X4 z' u9 o& u
1 n; R, n3 J& O$ _7 h- A- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; //高速外部时钟 8M9 i" n1 K4 W2 E, ^
- RCC_OscInitStruct.HSEState = RCC_HSE_ON; //打开HSE1 @! y1 p& f3 K. u
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; //打开PLL0 a B) Q; B1 g3 K
- RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; //设置PLL时钟源3 G3 {9 F3 |8 q+ y( _
- RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8; //8倍频+ l, N. G8 f" w8 q+ v0 q) k5 F; }
- RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV2; //PLL VCO输入时钟的分频系数
; S2 O$ z, h# L& H: | - if( HAL_RCC_OscConfig( &RCC_OscInitStruct ) != HAL_OK )
7 e; f1 V! Z: _3 [4 B7 x0 { - {- t) O8 X; O" I1 E5 ]% d5 s$ V
- assert_param( FAIL );
3 V8 ]+ h- r) @ - }6 E. [1 s+ P; r
- 2 h2 A8 b6 }9 g* b. v6 s K
- RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK |
z$ Y! `. Z' [5 P9 l% v - RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;$ K0 ]7 c3 }, n( x
; O4 n- r( g, X8 x- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; //设置系统时钟源
3 [5 V" e3 ^4 g, g) _ - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; //AHB分频系数为1 32
0 v6 @; m4 P1 [% `/ F - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV8; //APB1分频系数为8 4
+ N# U. R& w1 c - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; //APB2分频系数为1 32
1 \, b6 `0 o3 }" u. s - if( HAL_RCC_ClockConfig( &RCC_ClkInitStruct, FLASH_LATENCY_1 ) != HAL_OK )
: q3 k' Q) M% H6 ?- h - {& k1 m5 C' L2 ^8 H% W3 }" ]; u
- assert_param( FAIL );9 t |5 I) v* ?- o. W I4 Z
- }
^* Q+ Z8 k+ `: l) r8 i - . h0 `- ?0 F n# r0 H; _- h8 L
- HAL_SYSTICK_Config( HAL_RCC_GetHCLKFreq( ) / 1000 );
( L2 ]! ~; L# ?% M1 l/ U+ b - HAL_SYSTICK_CLKSourceConfig( SYSTICK_CLKSOURCE_HCLK );( d* y8 A7 S7 _0 c- y9 P
- HAL_NVIC_SetPriority( SysTick_IRQn, 1, 0 );
2 {, O# X. {6 h4 \! t ~ - HAL_NVIC_EnableIRQ(SysTick_IRQn);
7 ^7 a/ ?6 M/ \' H% O* t: m: e - }
复制代码 7 Z: ?# \: T( t3 U$ N$ K R
$ p8 Q# z( h+ ]" F
- j2 w( Y% W0 w& e, c, Z
|