MCU为stm32l0系列,时钟配置如下:7 u! R- X3 x4 _4 c
/ x4 W5 v5 N3 x3 p, |- F u% W( S' J B a0 }7 E- U
- x- |( v; h: m, T3 C! t( o
1 s% r4 }6 F. `- W# R+ N
; Z' m' E: x' h3 p- M0 M5 o! R- //时钟系统配置函数
1 Y/ [+ [- W. s# d9 J: M! t; I - //SYSCLK=Fs*PLLMUL/PLLDIV;$ J7 V$ Y5 A& u
- //
6 N5 ?, Z: k7 c- \ - //Fusb=Fvco/pllq=Fs*(plln/(pllm*pllq));
, a) s$ x* g0 W: _# T - //SYSCLK =
c( x5 P3 g; c5 I% e" u - //Fs 8M
# k0 \7 [" p8 A; E$ `+ U1 R, J - //Fvco: 8M2 g! A& E% e, l. i5 p9 X
- //SYSCLK: 系统时钟频率 8*8/2=32
( B5 B S9 b9 q - //PLLMUL:倍频 8
5 Q' s8 Z! W7 H/ I5 f1 b - //PLLDIV:分频系数 2 / O4 ~/ V- H" ], @4 d" A9 H) `4 P9 q
- 7 v. K- Q. x* c
- void SystemClockConfig( void )
7 Z* L* u t. n; Y! ` - {
' }: X2 y9 Z, \- c @5 ? - RCC_OscInitTypeDef RCC_OscInitStruct;; q- r7 I/ ^6 J# l m
- RCC_ClkInitTypeDef RCC_ClkInitStruct;
+ w2 v# ^/ l; q: \+ O! d5 y' H O
* p" @( K/ e7 c# _4 ~( Q- __HAL_RCC_GPIOH_CLK_ENABLE();: v5 e/ A) {; Y
- __HAL_RCC_PWR_CLK_ENABLE( );
; H8 j6 L7 O4 {( |0 Y
6 |( h# Q+ w% M" K1 q+ ?- __HAL_PWR_VOLTAGESCALING_CONFIG( PWR_REGULATOR_VOLTAGE_SCALE1 );
) z# J3 B! } v6 D - + l: s) o) L1 w" ^
- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; //高速外部时钟 8M
( ^* @3 Z% H2 C6 F - RCC_OscInitStruct.HSEState = RCC_HSE_ON; //打开HSE- A4 N4 y5 k* ^% E2 e
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; //打开PLL" _7 u- j* I* b+ v% d$ U% z& v
- RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; //设置PLL时钟源( W, S! B! ?% ^4 N7 h1 L
- RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8; //8倍频) m6 t" L! W# U9 E G/ v0 b i
- RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV2; //PLL VCO输入时钟的分频系数
2 N0 d+ L8 a# \' o" I - if( HAL_RCC_OscConfig( &RCC_OscInitStruct ) != HAL_OK )
1 X% m, G# D2 z2 {; q - {
" o$ ?2 G5 R. h - assert_param( FAIL );, R1 p& k# F6 Q
- }( [) I9 y; g+ t: |
- ; P1 c5 N6 p8 t% Z) u6 Z
- RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK |: @6 x3 \1 e; C9 s7 U7 x) u
- RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;1 b; P! P; I: y! _
- 2 {+ H4 a9 o) T* Z
- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; //设置系统时钟源
6 m C% N" D( T4 N2 Y2 b - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; //AHB分频系数为1 32
; P+ t* L; a8 u2 b* _1 B0 q - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV8; //APB1分频系数为8 4
, J" r+ r5 O4 d% A0 e - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; //APB2分频系数为1 32
6 `0 O+ N5 K3 [1 o4 z - if( HAL_RCC_ClockConfig( &RCC_ClkInitStruct, FLASH_LATENCY_1 ) != HAL_OK )
/ N) x- z, S0 _; r - {0 ]" \! p! i {
- assert_param( FAIL );
$ n1 C- r' [' s% [/ X6 u: l2 x& C - }
; _8 a: m$ H0 N" X
/ b) ~5 N( @" F* {/ L9 ]/ ]- HAL_SYSTICK_Config( HAL_RCC_GetHCLKFreq( ) / 1000 );( ^" u6 U' }( {4 r4 E3 Q
- HAL_SYSTICK_CLKSourceConfig( SYSTICK_CLKSOURCE_HCLK );+ u5 d$ ?$ f2 ?- ~. Q" Z
- HAL_NVIC_SetPriority( SysTick_IRQn, 1, 0 );4 Z, F& x5 e9 ~* w
- HAL_NVIC_EnableIRQ(SysTick_IRQn);
! @: t& y5 A K. _ - }
复制代码 1 c A* J% z3 E8 A I# O4 z/ M( Z
0 b: f; H8 T; \# w9 n2 p. v8 R
. v, j& f3 \& u5 \; L |