请选择 进入手机版 | 继续访问电脑版

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

【经验分享】STM32的时钟系统体系结构

[复制链接]
STMCU小助手 发布时间:2022-5-18 22:00
一、STM32 有5个时钟源:HSI、HSE、LSI、LSE、PLL。
8 P. A$ Q4 O" p  E/ U' z- v' N    ①HSI振荡器(RC振荡器)时钟是高速内部时钟,一般很少使用,因为精度没有外部高速时钟(晶振)那么高: D2 E3 k9 ]/ ~8 t% i9 n! o
$ b' F% |7 F5 Q, z! _4 r0 C, ]) l. K
   ②HSE是高速外部时钟接石英/陶瓷谐振器,或接外部时钟源,频率范围为4MHz~26MHz,M4开发板是8M         . w  W9 j! N3 D/ i; K
! `- w) ^0 g; l( a1 R7 F
        ③LSI是低速内部时钟,RC振荡器,频率为32kHz提供低功耗时钟。主要供独立看门狗和自动唤醒单元使用。3 Y# s7 F- H3 J
; W. i& y* b7 O, z
   ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。用于驱动 RTC 时钟 (RTCCLK)
! N* q4 A3 K7 x2 y# q5 |3 R+ M$ I( q1 I' W( s
   ⑤PLL为锁相环倍频输出(倍频时钟)。STM32F4有两个PLL:
  ~7 R" d! e, W; a7 Q
- b2 l$ {$ h1 R    1、主PLL(PLL)由HSE或者HSI提供时钟信号,并具有两个不同的输出时钟。
- K+ D* ~0 P, ]- I; @8 o* l2 X$ v: k4 J, e; A
            第一个输出PLLP用于生成高速的系统时钟(最高168MHz)
5 F. r# p9 t' W, C+ A; z; q$ g" K! w
            第二个输出PLLQ用于生成USBOTG FS的时钟(48MHz),随机数发生器的时钟和SDIO时钟。7 G/ r' ^# A. c4 {, l
% N  x4 F% D. o( M: J" @' V4 {
    2、专用PLL(PLLI2S)用于生成精确时钟,从而在I2S接口实现高品质音频性能。$ p$ D* U! U; f" s
& y4 R2 g% k8 o  S8 A# A- ^' {9 u
二、系统时钟SYSCLK可来源于三个时钟源:
- W7 M9 D) i4 X7 C# O: h% \4 ^! I        ①、HSI振荡器时钟/ e- t" V, F$ {( c( a- y9 b

2 Y& y0 e( Y' P/ e' b/ S. x2 m        ②、HSE振荡器时钟" r* I. W. @9 ?- s9 }1 R# d
& u0 x. d, d- @8 P
        ③、PLL时钟
) C8 S4 L- k" ~- X3 ]
$ N- z# K  \6 o' `5 C5 Z三、时钟树
9 ?) G" ?# a2 ?9 P7 L% i0 _3 t! y  L% t0 y9 a; c
E6UZ4OM`9S_9F@)XS@_ZCXN.png 8 T' B5 u* F% V9 [. D$ ~* c
" C% X. \; R7 L, R8 {+ b
34SK~UFOJ6CZA6DNK3D4Q.png
+ K2 m/ V3 W4 R1 W% N" D3 o; t  u( u( q* X8 c4 {3 [3 T: u2 D; q, l* {0 g
四、开发板与系统时钟频率不匹配,如何修改?; S5 y" o! |6 I( R, h- B& _
5 f. K) Y5 t1 V0 O) E# K
  1. //1.查看汇编文件 startup_stm32f40_41xxx.s的第177行
    9 ^6 K& J4 s' G7 H

  2. 2 |1 f  K: y: h6 J; N$ L/ P* T
  3. Reset_Handler    PROC // 复位中断执行
    # F) i0 h' S. y# Z, U0 i% o4 q; l9 T
  4. . M+ |) y( v4 X' |3 T& @
  5. EXPORT  Reset_Handler             [WEAK] // 复位中断执行
    ( }$ e7 d8 n" n# N6 l( I" U- o

  6. " B! m' p- p" ^, I
  7. IMPORT  SystemInit // 系统时钟初始化的入口
    4 U1 l/ U; c1 N7 W$ [# j) p

  8.   y. `8 u1 }! @
  9. IMPORT  __main
    ( G# \( K+ M4 |# E0 `) T
  10.        LDR     R0, =SystemInit  // 系统时钟初始化
      y4 _# q& d! i5 j, ~0 m( O

  11. , Q+ Z! d5 b2 \
  12.        BLX     R0
    / M* M( k$ J4 J: a
  13. . S' G9 R2 h# i8 `$ R7 N
  14.        LDR     R0, =__main  // 启动main
    ( _5 L" a; S; O8 M
  15. ' W( o3 c$ O3 f
  16.        BX      R0
    , k1 e2 m; T7 ]7 ?7 J

  17. , }8 G3 m# s+ x6 L2 u! h
  18.        ENDP
    ! p& v9 S) {$ U: S9 z9 o  G

  19. 7 g6 X+ i$ {* C- J

  20. 9 u, K, o0 Y! x2 ~7 L0 g+ \/ `1 j
  21. //2.查看system_stm32f4xx.c的第252行开始
    ( ?% Y( U& \! Y6 F4 Z7 K2 s
  22. 4 m* d  }. u' c7 \8 _' ~  R
  23. PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N. {. W$ Z( F% \( H' ~5 e
  24. & B3 O3 W, ^2 J% }4 o8 C1 V& E
  25. PLL_VCO  = (8000000 / 8) * 336. \3 n, ]6 k' V7 p' P% R
  26. % l* |, g" B7 |
  27. & _6 B: X9 I' O4 @
  28. //计算公式:SYSCLK = PLL_VCO / PLL_P = 336*1000000 / 2 == 168000000 == 168000KHz == 168MHz
复制代码

' N7 V+ \) K0 G; Z3 w* P: w& `, Q4 ?; e+ w2 _5 S9 C: P
  1. 修改:system_stm32f4xx.c第254行# s1 f7 f5 m$ ]" Z& k% V

  2. 7 v. f9 i  j5 C6 q9 s  Z
  3. #define PLL_M      25# l. ?; G0 K; E4 q, D

  4. - [3 ]' b( g$ ]' M# K6 J' U
  5. 修改为:
    - d% `8 d- p% ]0 P) v6 I) f2 v

  6. . j" E# p# H5 E2 V, [4 h
  7. #define PLL_M      83 c& Z' a3 q6 u8 r8 f

  8. - l+ ]: h$ `: ^$ p) M) _. n
  9. 修改 stm32f4xx.h第127行$ ?# P6 I2 c- ]7 M$ U

  10. ! E/ o1 _0 ]$ q' w
  11. #if !defined  (HSE_VALUE)6 J) _7 g  P' P  ~4 r7 J; C. g$ x

  12. : _# W  U4 ]3 {+ y6 Q
  13. #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */1 P  \& R  |5 d& x! U1 @3 @

  14. " Z: O# ^$ L( L2 v# Y  x7 G- L8 ]* j
  15. 修改为:1 _$ v* B- P# U) G0 G

  16. 1 D% P) f% p" I& I
  17. #if !defined  (HSE_VALUE)
    ' a  X' V' ~# F1 s3 p& D: `

  18. ) f; i  V* }# O- D
  19. #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz *5 m+ Q' M3 X9 {5 I
  20. : m$ l+ p. Y/ }. q/ }9 e
  21. (如遇到无法修改:权限问题:)点击名字那里能看到路径,找到.h修改权限
      k$ {/ z2 p8 H

  22. 2 J0 M. f8 C* y
  23. ( A  I) Z) a9 n: q

  24. 2 ~$ Y6 ]: A, J  x8 @7 t
  25. 根据文档了解我们的开发板的总线时钟频率:; P1 S. m# a( [9 Q& Z, H

  26. 4 e) {' m8 v1 q, g$ j- {4 E
  27. 系统时钟频率:标准频率为168MHz0 D' s5 B! ~3 Y: E

  28. 9 y+ x* A: B9 n, {. o. P6 Y0 ~. V, w
  29. AHB时钟频率:168MHz$ c1 t2 k& p9 |  W9 P
  30. , A0 y1 P7 V! X- I, K
  31. APB1时钟频率:42MHz, @8 b: F- S4 L1 W6 Z6 [

  32. ; Q2 s$ N6 L* i* g
  33. APB2时钟频率:84MHz
    / p8 C+ R1 j( v0 B: F! W! L) W6 r3 }# c
  34. " \$ f+ T. S# H1 e8 I7 W; K2 v

  35. * h0 }. b$ x' f) ]# p* }% p

  36. 7 m/ V0 j' a" \
  37. 超频:提高cpu运行的时钟频率。
    3 g. E+ V; D/ b
  38. ) n  u7 C% k  L( G, K) T! T/ O6 ?5 M
  39. 调节PLL_N为432;6 @7 Q" `! P* e& Q- @* b  f, S

  40. ) c' I* h- Q; o* @/ L& {
  41. 降频:降低CPU运行的时钟频率。
    % t8 j# n4 p5 L1 E7 b5 Y4 u5 P2 T

  42. 2 H6 T, [& B  J, i) K7 _
  43. 调节PLL_N为168;, O2 F: Z) e) x6 B9 ]" }# j3 p

  44. ) _6 d0 G+ g( S
复制代码

5 X& {+ ?; k; K# {1 T
L{A{COLTL`M4G6BZQ32{CP2.png
收藏 评论0 发布时间:2022-5-18 22:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版