MCU为stm32l0系列,时钟配置如下:6 x: [. l+ [$ U0 h( i9 h
3 G% c5 P9 F( Q" _4 x- M; r1 Z$ u; J H
. M0 Y$ p3 }' Z. K
/ j$ R ]' f6 |% Q2 x
* Y9 Z# S3 G# a! D, G ^. U. l3 J- //时钟系统配置函数: Q, ]5 \. v4 [8 h. Q9 s+ t5 z
- //SYSCLK=Fs*PLLMUL/PLLDIV;! q6 p( J s5 `% h; y
- //
: L" F$ o2 v, @ - //Fusb=Fvco/pllq=Fs*(plln/(pllm*pllq)); Y8 n5 g* U2 |; @7 a! C5 ?
- //SYSCLK = 6 b$ |/ k4 h/ B
- //Fs 8M
' i2 \9 W. X3 j% h - //Fvco: 8M
4 ]. G; B R& [, l" T' c( p: @2 Y- B' N - //SYSCLK: 系统时钟频率 8*8/2=32
; ~; _( ^5 p& e - //PLLMUL:倍频 8
* j, s0 r6 N/ N6 C! H - //PLLDIV:分频系数 2
- }/ R5 T! j/ [( {, w! H1 E5 ?
' M& W$ D) r3 `4 Z9 \- void SystemClockConfig( void )# T* L3 r9 d5 Q" o+ g+ a
- {
1 g: Z' C& @& P+ F, D9 ^' Z - RCC_OscInitTypeDef RCC_OscInitStruct;
( E( u B5 T% B, C* z - RCC_ClkInitTypeDef RCC_ClkInitStruct;8 U2 f! @ P! X" E% L' |' p4 K) |
# i/ m# B1 n9 h$ G& E. {- __HAL_RCC_GPIOH_CLK_ENABLE(); [" h, s B/ {# o- _3 U
- __HAL_RCC_PWR_CLK_ENABLE( );% o1 b% Q5 f$ S5 [( Z O
$ H q7 M0 Y+ c7 ]) h$ ]2 q- __HAL_PWR_VOLTAGESCALING_CONFIG( PWR_REGULATOR_VOLTAGE_SCALE1 );
. X) }; R7 |9 I# A, c$ p& E
5 b8 F* A P8 Z! A( G3 Z- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; //高速外部时钟 8M
- l! w' I3 P& v - RCC_OscInitStruct.HSEState = RCC_HSE_ON; //打开HSE4 Q& U) D; b7 m7 Q, n" l
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; //打开PLL: m: l4 o8 l) Y) B4 V$ `0 k/ q
- RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; //设置PLL时钟源( |* v# Q u2 K& P* `; M6 @. n
- RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8; //8倍频! ^0 T4 P3 P" X8 i
- RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV2; //PLL VCO输入时钟的分频系数9 |* H" u7 K8 i# D8 i7 N
- if( HAL_RCC_OscConfig( &RCC_OscInitStruct ) != HAL_OK )
* X, M- q- b; @$ Z) Q7 x& p4 ~5 h - {- z1 j0 u* ~) Y- [4 }
- assert_param( FAIL );
5 w3 t- ]* M9 w' J/ }5 E/ ^ - }
% T2 i% \$ k8 W; j$ w
& |$ B. p. t0 ` U- RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK |! a; a5 T, b, h( Q- ~7 _
- RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;: E' ~! ~7 y; r2 D8 X8 d
, K& F+ v9 W# Y, `- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; //设置系统时钟源
0 \9 F+ B6 V1 I* l' s - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; //AHB分频系数为1 32
# f6 q' w# Y, X4 G0 _1 g - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV8; //APB1分频系数为8 4
3 A4 r# U0 c3 v - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; //APB2分频系数为1 32
. ?! f+ n' U3 }1 B8 E3 N! v7 } - if( HAL_RCC_ClockConfig( &RCC_ClkInitStruct, FLASH_LATENCY_1 ) != HAL_OK )" ~- K( b" d: Q8 t5 E
- {: ~: |/ o. R0 a- V
- assert_param( FAIL );
. `; Z. w( l( \# b5 C - }9 D: Y3 v2 ]# u6 d8 m
- 6 C+ x7 e; F$ T4 A) p4 J x
- HAL_SYSTICK_Config( HAL_RCC_GetHCLKFreq( ) / 1000 );
" H( [$ B( C: A' I# T& G - HAL_SYSTICK_CLKSourceConfig( SYSTICK_CLKSOURCE_HCLK );( a$ I' M4 v( X( I, X' @
- HAL_NVIC_SetPriority( SysTick_IRQn, 1, 0 );2 T" B& f3 F! g3 k& L& T' H; @
- HAL_NVIC_EnableIRQ(SysTick_IRQn);
) ~, f: B0 I1 N9 K3 [# G+ ? - }
复制代码 : z/ L3 |6 c% L9 V" e+ ]
( f$ z2 i( f5 }
& @4 A2 f/ c: `2 u0 B: W$ O2 A |