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

【经验分享】STM32时钟系统总结

[复制链接]
STMCU小助手 发布时间:2022-5-9 19:00
前言, S( w# K0 L7 U1 x: e# \
一、时钟系统
( }2 t, w& G) M& U1 e
时钟系统图:' U" O; o' w/ s" V

) ]; G9 N7 O( t @}AH}X[[]EM]293@C}0{W9K.png   B  y. M7 g$ ?

) N5 }' c( W7 D, t二、时钟系统配置结构
' M, g. z! L# y" k5 _1.STM32时钟源

! H1 v9 ^& [% D: u, M4 S, c- C5 C可分为五种:HSE时钟
7 o" c% [# x! h* \高速外部时钟信号(HSE)由以下两种时钟源产生:
6 O- h" C( z  k0 _● HSE外部晶体/陶瓷谐振器' G$ y' Z8 x+ ^! K5 X* I5 k8 Q
● HSE用户外部时钟+ L# W+ u8 S, y& c
HSI时钟
% w- _4 y8 ^  k# B0 `$ hHSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。; i  C" {5 T. B7 s9 f  D: x
; R. N, Y* T' r; m9 t
PLL: }+ z) w& r1 X+ h; @5 ~
内部PLL可以用来倍频HSI RC的输出时钟或HSE晶体输出时钟。- x  h8 Z/ `; F5 _0 J

3 J! z, N# |  X+ u# f: l" ^2 c* oLSE时钟
7 w2 w% d4 Y4 b4 A/ g$ HLSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供& U" L5 G) Q$ U7 P0 E9 d2 @
一个低功耗且精确的时钟源。
1 X" i; u, c8 VLSE晶体通过在备份域控制寄存器(RCC_BDCR)里的LSEON位启动和关闭。
2 I+ C! H* B4 h; ^& a9 ~$ S# q2 Q/ B$ q- f8 s
LSI时钟; P2 z+ M) p3 R1 Y- _
LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和/ [& K& |* u& K) j' q; `' i
自动唤醒单元提供时钟。LSI时钟频率大约40kHz(在30kHz和60kHz之间)。进一步信息请参考数
/ B) e0 M% O' c. S/ X据手册中有关电气特性部分。
) l  Q7 [6 [/ _* RLSI RC可以通过控制/状态寄存器(RCC_CSR)里的LSION位来启动或关闭
/ p' a% |' [( k1 k: i
# A- a' a4 X# e8 F1 Q$ V. K2.RCC寄存器
  C) G- K! g+ s; \. _$ _. o时钟控制寄存器(RCC_CR)6 ^+ a, H& T) ^9 B4 I2 J
时钟配置寄存器(RCC_CFGR)6 X% ]4 F# W) h' C8 B8 P7 T8 K
时钟中断寄存器 (RCC_CIR): P4 g( R4 B: J7 ^
APB2 外设复位寄存器 (RCC_APB2RSTR)
  C# s# n1 U5 u% CAPB1 外设复位寄存器 (RCC_APB1RSTR)9 I( `9 x8 W4 \5 g9 S
AHB外设时钟使能寄存器 (RCC_AHBENR)7 R( {5 ~( x# y
APB2 外设时钟使能寄存器(RCC_APB2ENR)
8 r: g# O5 K/ N$ g* v0 V, ?: o1 }APB1 外设时钟使能寄存器(RCC_APB1ENR)% n8 {, H. y% M3 @( d
备份域控制寄存器 (RCC_BDCR)
; w! B' X/ I! |. w  `' a$ G控制/状态寄存器 (RCC_CSR)" ?( |5 |0 I0 ^, s- V

% B) u2 r+ t5 ~( T4 F4 Y! u8 s
  1. typedef struct
    - O! \% R, k/ j  e' J# a
  2. {- V) `: b- `8 l
  3. __IO uint32_t CR; //HSI,HSE,CSS,PLL等的使能和就绪标志位
    4 i  o# m% b2 w3 m2 O8 U% h
  4. __IO uint32_t CFGR; //PLL等的时钟源选择,分频系数设定; H' I, L$ L" F6 \& P' |
  5. __IO uint32_t CIR; // 清除/使能 时钟就绪中断; H0 K0 M' b) i0 o6 I
  6. __IO uint32_t APB2RSTR; //APB2线上外设复位寄存器
    ; O+ K" p& @3 Q; W  A
  7. __IO uint32_t APB1RSTR; //APB1线上外设复位寄存器8 N7 O/ H8 Z6 j* }4 W4 X6 ~
  8. __IO uint32_t AHBENR; //DMA、SDIO等时钟使能
    9 A. C" l3 J. J  c
  9. __IO uint32_t APB2ENR; //APB2线上外设时钟使能
    " ?' g7 h  Q% B) ^
  10. __IO uint32_t APB1ENR; //APB1线上外设时钟使能# e" y1 n1 X7 u( ^9 Z' |
  11. __IO uint32_t BDCR; //备份域控制寄存器0 _% M3 M  H+ O
  12. __IO uint32_t CSR; //控制状态寄存器
    8 a% D9 Z2 z, [! C
  13. } RCC_TypeDef;
复制代码
4 V% q: o& J9 M2 r  h
详细查阅:STM32中文参考手册6.2。" h' p, T' n8 X9 U( h% [/ R) u- I2 ?
+ t* N# q: P% r
未定义STM32F10X_CL,在system_stm32f10x.c(第0115行)中定义了SYSCLK_FREQ_72MHz,具体如下:) V. G! Z# F: G
  1. #if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)6 }; @& r  o. f# k+ b. }  A+ q4 F2 q
  2. /* #define SYSCLK_FREQ_HSE HSE_VALUE /, ?7 A$ i3 w  ]. S. t/ X
  3. #define SYSCLK_FREQ_24MHz 24000000
    ! b3 q9 Q: i; H: F4 d8 y
  4. #else! C& U  s* W+ y& V8 d7 B& e
  5. / #define SYSCLK_FREQ_HSE HSE_VALUE /
    3 ^" t# f8 t/ ~' E
  6. / #define SYSCLK_FREQ_24MHz 24000000 /# N4 x; [3 W8 `7 n/ x
  7. / #define SYSCLK_FREQ_36MHz 36000000 /
    # e4 f( n1 ?0 t3 V9 k; N- e
  8. / #define SYSCLK_FREQ_48MHz 48000000 /* I# l! q, R3 V9 u1 P/ O- x7 H
  9. / #define SYSCLK_FREQ_56MHz 56000000 */
    7 I9 I) h8 X0 @* P* h0 Y
  10. #define SYSCLK_FREQ_72MHz 72000000
    " Y% M; o) J6 L( M- R
  11. #endif
复制代码
( \  y) x! h  o$ }. d6 _7 p
STM32F103系列晶振能跑最大值72MHz
& q$ A# T# K8 G" m6 P
5 E6 s' N7 U9 y* I/ {
4 `/ a, J) s' E; t, X( P* j+ m8 D$ n& v8 Z2 J
& ?/ f2 s# Z. W/ S  ]* i+ E$ K
赞 收藏 评论0 发布时间:2022-5-9 19:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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