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

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

[复制链接]
STMCU小助手 发布时间:2022-5-18 22:00
一、STM32 有5个时钟源:HSI、HSE、LSI、LSE、PLL。4 U* B* b. Q; G9 p' E
   ①HSI振荡器(RC振荡器)时钟是高速内部时钟,一般很少使用,因为精度没有外部高速时钟(晶振)那么高) i$ G6 L0 T: O* ?- U
9 I1 j+ a4 Z% \- N2 G6 ]
   ②HSE是高速外部时钟接石英/陶瓷谐振器,或接外部时钟源,频率范围为4MHz~26MHz,M4开发板是8M         
# ~/ M+ {8 u, Y( I6 H0 n( C6 R; E! r, V2 s. f
        ③LSI是低速内部时钟,RC振荡器,频率为32kHz提供低功耗时钟。主要供独立看门狗和自动唤醒单元使用。
+ C6 T2 M5 _# T2 J/ M5 S' {8 ~/ [1 |8 Q0 N" ^8 K( @
   ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。用于驱动 RTC 时钟 (RTCCLK)
, P: f( Y! S+ B, z, l
- X0 N: e1 d5 _3 U- \, Z   ⑤PLL为锁相环倍频输出(倍频时钟)。STM32F4有两个PLL:! v8 b+ L1 e( }- g( e$ Y' Y7 a
9 H9 F$ S7 e- K# M: O6 d+ Q! P( m
    1、主PLL(PLL)由HSE或者HSI提供时钟信号,并具有两个不同的输出时钟。, S( n4 t& a( t7 L
/ y6 X6 X9 m# W
            第一个输出PLLP用于生成高速的系统时钟(最高168MHz)$ z# k: U* M0 {8 p0 T8 V

) r/ S" m6 ?4 J0 ]% `% n8 r& g, q: C) i            第二个输出PLLQ用于生成USBOTG FS的时钟(48MHz),随机数发生器的时钟和SDIO时钟。
' {3 K6 B7 u+ J3 a+ V
  Z3 K; Q$ ~7 S6 N" O( b; G+ [    2、专用PLL(PLLI2S)用于生成精确时钟,从而在I2S接口实现高品质音频性能。
" X' m7 R- a, L7 z8 E
3 L1 g$ ~+ u. g$ ^& \5 Z: x7 N二、系统时钟SYSCLK可来源于三个时钟源:
2 o; T0 s) b4 x; z3 r        ①、HSI振荡器时钟7 N. F- i, g& `. {% h4 g) Y
9 C, F  G, L- f% d( n
        ②、HSE振荡器时钟
* ?* H  c* n3 l; F5 ~* b8 F1 T9 r  M( T
        ③、PLL时钟9 m% C  Y/ d" L
6 z" T; {! Z# o) P. B1 K
三、时钟树
3 w4 W) l3 l7 n% {. K. C1 f9 {  J# s
3 n' i0 c+ O" S4 x4 r7 ~ E6UZ4OM`9S_9F@)XS@_ZCXN.png " @' q: @$ _* {* i
) H1 _# H$ q$ n) J( ?& W4 k# l
34SK~UFOJ6CZA6DNK3D4Q.png ! I0 M) g  _/ @- ^$ f. N: S0 \/ g
4 W, s* ]' v6 z6 n$ ?5 C
四、开发板与系统时钟频率不匹配,如何修改?
3 x9 k4 H3 w* J9 E7 K
, E( Y9 Q( s$ W. L1 V: t
  1. //1.查看汇编文件 startup_stm32f40_41xxx.s的第177行3 n! o) P* C, i/ _; A7 U) V

  2. $ N! C% l* }  h' J
  3. Reset_Handler    PROC // 复位中断执行/ }9 u- q8 z+ i

  4. 7 b$ J, m7 H& f) |& D  D) |7 X2 S
  5. EXPORT  Reset_Handler             [WEAK] // 复位中断执行
      O7 C. D0 B/ N3 f) Y
  6. . o0 i( n  ^. Q( h
  7. IMPORT  SystemInit // 系统时钟初始化的入口
    ; [4 ]4 o4 x: Z1 g5 M

  8. 2 W% t4 B; M1 Z. w. K; z# o
  9. IMPORT  __main
    " [2 U6 A3 x+ C3 ~) I/ x
  10.        LDR     R0, =SystemInit  // 系统时钟初始化3 C- r# Q  I( W; G3 U8 Q+ D
  11. / j4 V4 B1 [6 ^2 s
  12.        BLX     R0
    $ S( P5 K2 b! X, X, [
  13. & l+ G4 O7 A" h5 _+ c- |( S
  14.        LDR     R0, =__main  // 启动main  h& s2 ^% L( J# G/ |9 [

  15. 3 F$ A6 @) I% r* t
  16.        BX      R0
    . a% @. v9 ?- O! T7 a3 H

  17. ( ~0 t' S! x# z& c# @
  18.        ENDP
    ) U- t& O; t( X4 \* O0 f3 f

  19. ( m* b( [! `  C, z

  20. 1 o8 e% o9 i- X$ J3 `) D
  21. //2.查看system_stm32f4xx.c的第252行开始
    2 x' @7 G# A9 I: t0 _/ X
  22. 5 i* R$ Y1 q5 ]  M1 E6 O
  23. PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N, C  n0 S9 H- \. u7 X8 l6 M
  24. 7 F+ E4 J" ?9 ]1 L
  25. PLL_VCO  = (8000000 / 8) * 336
    3 E6 A4 X/ \4 ]: m" A( i  _) a

  26. " J5 {/ H" |2 Y& H! Q$ x. o8 }. L
  27. 4 i" x+ R1 P; U) x5 k
  28. //计算公式:SYSCLK = PLL_VCO / PLL_P = 336*1000000 / 2 == 168000000 == 168000KHz == 168MHz
复制代码

& k% g, \. v+ N0 Y% M8 u3 {+ {* g8 u
  1. 修改:system_stm32f4xx.c第254行1 Q1 X( s+ b  y. X* O
  2. 1 G) S  j6 v- [9 Y2 ~0 p# P
  3. #define PLL_M      25$ {7 u/ `8 S( |) k7 M% K
  4. 9 f- n5 g) b' g+ u0 E; t- j8 A
  5. 修改为:4 z1 Z' N) _3 c5 K7 D0 F

  6. 3 V' U- K' q7 ?2 |( A
  7. #define PLL_M      8
    % |. D, n+ w. |, o, j

  8. 0 y6 K+ w  g( S
  9. 修改 stm32f4xx.h第127行
    1 |8 p* o( Y. q$ {; b8 P
  10. ( A$ e( Q, o2 z% c
  11. #if !defined  (HSE_VALUE)( i7 z3 T- ~1 T: A7 K# k$ u
  12. , A% O7 s- D6 C- u7 ?2 |& C
  13. #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
    3 Y# B9 ^+ N# D. |

  14. / ]: ^. \  K- C5 w  ~$ j' c8 \% S7 ~
  15. 修改为:9 u& f2 Q, p8 ?4 v( v

  16. 5 _& R: y! J# p3 G% ~+ v: f
  17. #if !defined  (HSE_VALUE)$ z5 G4 }+ P" R$ t6 |
  18. - c9 L* Q# @1 Y% }5 U0 d
  19. #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz *
    ( Y+ J$ z$ {# _+ `; A0 G* g

  20. - M0 S5 y7 X6 v. ]1 m) m) Y
  21. (如遇到无法修改:权限问题:)点击名字那里能看到路径,找到.h修改权限
    8 z6 |: {! y: `
  22. & P% u- S7 a" }% M8 V# x" G

  23. 0 D$ A& t# O& P& l( w
  24. + I8 p2 M0 Z" a9 Z+ M  [
  25. 根据文档了解我们的开发板的总线时钟频率:# }% e$ c( s' Q  y# M  Y7 e7 n
  26. - q0 g, H2 d* c* [$ |2 t
  27. 系统时钟频率:标准频率为168MHz
    + E* O5 q0 E- g( g
  28. / z! a4 N( l. u& u1 c0 u3 }" m$ g3 J
  29. AHB时钟频率:168MHz
    8 ?+ _- C- i6 b
  30. - b3 E$ F: H5 g; }- c/ \
  31. APB1时钟频率:42MHz8 y4 J; h8 D0 g0 ~% ?# D7 \, j3 t

  32. 6 _5 F" k! g6 p
  33. APB2时钟频率:84MHz% x* @; y0 V  V9 U' u, _3 K
  34. 5 W5 L) M4 t* |0 B2 T: L

  35. % ]1 ]: ?6 ]2 r3 x  E- C1 B

  36. , P# w0 h3 n9 G' O) E
  37. 超频:提高cpu运行的时钟频率。  c% R) D7 O$ f; s
  38. ! q8 `$ G% X; j" l% P: R  G* ]7 [" G
  39. 调节PLL_N为432;) _9 y! {' a3 H5 `; W9 X

  40. . O3 U4 k5 B2 c
  41. 降频:降低CPU运行的时钟频率。
    3 f0 j# \/ U7 I" W
  42. 6 z2 b1 B% f- s, H) a1 ~/ l  D
  43. 调节PLL_N为168;
    ' D- y$ l- ~+ R4 d# k; W& N

  44. , k0 A0 k  p# J7 w2 ?& D
复制代码

" {2 t7 C$ c8 N
L{A{COLTL`M4G6BZQ32{CP2.png
赞 收藏 评论0 发布时间:2022-5-18 22:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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