你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】stm32L0 (一)系统时钟配置

[复制链接]
STMCU小助手 发布时间:2021-11-15 21:01
MCU为stm32l0系列,时钟配置如下:% @6 L7 f; Q; n6 P5 E! x$ y: w) B
8 A8 W4 {  O# f( x
20190806093803594.png
" T5 O4 t7 s  G; ?, u
. |- Q- s3 w4 h( M8 ], x0 _* T6 J; y- d; R
20190806093910148.png
' S! }$ J3 d; F( [  ?" h  g
+ D/ j5 t; M1 X3 P
  1. //时钟系统配置函数
      K8 O5 f/ N7 {; _6 _
  2. //SYSCLK=Fs*PLLMUL/PLLDIV;# [+ E+ D, N/ g+ v% e
  3. //
    5 J7 k8 `7 Z; R8 m' j
  4. //Fusb=Fvco/pllq=Fs*(plln/(pllm*pllq));. w5 J9 V: I3 M
  5. //SYSCLK =
    / Y: j* [2 ^" u! C$ [9 M
  6. //Fs 8M : Q/ g$ P9 s1 X3 R8 K
  7. //Fvco: 8M+ o: Z$ Q/ J* m. Z6 z& }9 r
  8. //SYSCLK: 系统时钟频率 8*8/2=32) D8 a2 b( i% I" E  ?- R
  9. //PLLMUL:倍频 8# a( Y5 [; |7 H5 |. d; h. z. S
  10. //PLLDIV:分频系数 2 ) Z$ t# p8 b% u: t5 V& f

  11. : n) V7 s6 r+ l8 f4 {8 w5 p) G5 p
  12. void SystemClockConfig( void )8 N5 K; D/ q( i3 ]
  13. {
    - l2 `* Q0 U1 L; t7 e
  14.     RCC_OscInitTypeDef RCC_OscInitStruct;2 K+ ^, W* d# j5 m) x4 f: }
  15.     RCC_ClkInitTypeDef RCC_ClkInitStruct;
    # B7 b4 Q' r1 C3 a7 a, P
  16. 5 p/ }! }/ j2 j) \8 A, g
  17.     __HAL_RCC_GPIOH_CLK_ENABLE();
    " s7 N: M& y, _/ _1 Z1 K2 J9 F
  18.     __HAL_RCC_PWR_CLK_ENABLE( );% t- l1 B! N& t* O- [
  19. % k( ~& P' ]) a! x
  20.     __HAL_PWR_VOLTAGESCALING_CONFIG( PWR_REGULATOR_VOLTAGE_SCALE1 );    3 c: _. Y/ J2 Q4 B, c! ]

  21. ( W# C  \5 c7 z6 |0 e; ?
  22.     RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;    //高速外部时钟 8M
    & w5 s: ~# L" B: s3 Z6 {  }
  23.     RCC_OscInitStruct.HSEState = RCC_HSE_ON;            //打开HSE
    & ]1 O, n6 d8 b! Y/ K
  24.     RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;        //打开PLL
    ; A6 q  s: [- a1 C% j
  25.     RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;    //设置PLL时钟源
    7 q3 M' [, ~( ~) G, v8 P
  26.     RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8;            //8倍频
    $ r5 E$ e- t' q# F5 r1 ?4 a# c+ H6 S
  27.     RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV2;            //PLL VCO输入时钟的分频系数
    , c  p5 i+ y6 l" o5 T0 y
  28.     if( HAL_RCC_OscConfig( &RCC_OscInitStruct ) != HAL_OK )  n9 [7 M# ]4 j' h4 L3 t
  29.     {
    5 b0 k. d( |( @# w) W" E
  30.         assert_param( FAIL );$ N- _+ C  Z; `9 m' A/ t2 f7 J  e
  31.     }
    9 L  ]6 ]  q( l% R7 p% N
  32. 2 Z" a3 X/ m5 Q/ ]* Y; s9 p8 t
  33.     RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK |2 v& k' ]( A  `
  34.                                   RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
    ( c: Z- j. b: V
  35. + b8 F8 j) }7 |4 W8 E
  36.     RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;        //设置系统时钟源( W/ v3 _/ [- f& z" A4 n
  37.     RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;                //AHB分频系数为1 32/ _  J2 e9 |6 |( o( `$ ]) K6 k* U
  38.     RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV8;                //APB1分频系数为8 4
    3 ~- i% n. V7 q# s0 d, l
  39.     RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;                //APB2分频系数为1 32
    " N8 `# u) ?5 ~3 A3 T+ V/ C
  40.     if( HAL_RCC_ClockConfig( &RCC_ClkInitStruct, FLASH_LATENCY_1 ) != HAL_OK ), p+ s) O5 |9 J4 h
  41.     {
    : Z0 h7 \& ^1 }
  42.         assert_param( FAIL );
    " S# s" v$ i; S' Q, `1 z
  43.     }
    8 y% A7 C- }; @+ m- r/ O. D
  44. & w" q4 Z) E9 H" g. i  _! T  ~
  45.     HAL_SYSTICK_Config( HAL_RCC_GetHCLKFreq( ) / 1000 );
    $ D; N" ^# E3 Y! z" {
  46.     HAL_SYSTICK_CLKSourceConfig( SYSTICK_CLKSOURCE_HCLK );
    7 \' @% y5 a# y% S
  47.     HAL_NVIC_SetPriority( SysTick_IRQn, 1, 0 );' Y# V' M1 w: C  n
  48.     HAL_NVIC_EnableIRQ(SysTick_IRQn);7 ^* f! W9 V; x/ [( Q! j" m
  49. }
复制代码
! q: R# R* I% M( C' @/ y

. P# ?( s* O1 B$ S  S0 k2 C  n& A; g' @+ p+ r0 L% L3 D
赞 收藏 评论0 发布时间:2021-11-15 21:01

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版