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

【经验分享】STM32f1时钟系统整理

[复制链接]
STMCU小助手 发布时间:2021-11-27 10:06
STM32f1时钟系统, T, Z+ e) t4 ?* t6 S
8 h; f0 R0 d& E% o3 J
一、祭出STM32F1的官方时钟框图
+ v* a7 ^. c  M- j  X8 b# a
9 y1 ?+ b4 N) c) }
20201008101308453.png

6 U( K7 G1 U. H% N1 r# W& o- M6 [$ B$ w' w
20201008101308299.jpg
& \' H. T8 d/ x, j/ v0 K3 N

8 d' r9 X8 {) Z9 l
8 [4 c# p9 t8 U, h% I二、寄存器说明
# p8 W4 m' Z; n- b- M. O5 ~7 b% U7 {% E' ?
1、时钟控制寄存器RCC_CR
" Y* y* l4 \/ q  N- y7 W/ r  d( C/ p
20201008101308232.jpg
! O, o; H5 U, K2 q; ?* l5 B# u0 Y$ z7 t

# m! Q7 i, J5 `4 e5 V, F0 P第0位:HSION(0,关闭;1,开启)2 J: ]  o* s$ P( r

6 ~6 \! W. e; I$ b+ R第1位:HSIRDY(0,HSI未就绪;1,HSI就绪)3 J1 `# F% T3 E
& ~/ C8 t( y) Z3 x- c+ W* r3 k: G
第16位:HSEON(0,关闭;1,开启)) O; L* ]# B! M! y! F2 F
: X: G8 m! E8 [4 Q
第17位:HSERDY(0,HSE未就绪;1,HSE就绪)( a9 s. i; x( s" ~( N* M6 @
. W; v) N0 r$ X+ F+ @! g
第19位:CSSON(0,时钟检测关闭;1,时钟监控开启)
  E& S: d& S  p( T( r; t% S2 _! B7 ^& H! g: `
第24位:PLLON(0,关闭PLL;1,使能PLL)
* U1 c& _& C# j( G; @1 {! M+ d
( c! H9 ]) l0 d$ d3 J第25位:PLLRDY(0,PLL未锁定,1:PLL锁定)
: j8 @/ u9 h4 K' G9 \* G9 }) E" q1 r% q& x4 M' F" ^
+ k( m" k' p: D! p1 Z2 u
2、时钟配置寄存器RCC_CFGR
, e; v% a$ k# w0 a) \* z+ L+ Z# q
20201008101308204.jpg

0 L) y5 K) B. q: @7 ]. D4 J
* |/ C5 `" ~% f
20201008101307851.jpg
. l! z, P) p' f) Q! `% T- c0 [

2 h7 t" K- X% b4 m
, ?9 O! F1 r9 t$ l第1:0位SW: 软件设置时钟源
$ w( ]. [! v. y9 c  ?, `4 a4 o" w
5 j  W8 T2 s/ i# D" p7 t00:HSI为系统时钟
* c' g- A% {5 O3 j5 [# O$ y) n4 m/ t4 W' h" H! P" Y
01:HSE为系统时钟  }1 m: X8 ~$ u; u0 ~
# H$ p0 ]2 p% O* R; {0 K1 g6 j
10:PLL作为系统时钟
4 X; D" |% }* L2 k  R1 O  F
, R* Q7 g' P. z8 k/ V4 i2 M11:时钟不可用
/ b) L9 b4 S: a1 o
9 Y1 e% w- U  p/ f8 p; ~第3:2位SWS:硬件指示时钟源$ W: U! B& m, P+ [4 ^

; O3 n) B" A& w; R9 l; ?/ O00:HSI为系统时钟 5 t9 E& \' L. V
; s7 ~. p5 e% c
01:HSE为系统时钟
7 \- v! M& g4 _
# U1 D" \9 [) q1 `10:PLL作为系统时钟5 c4 x3 P& _* I

3 I1 ]: y( V8 Y11:时钟不可用
" d8 L: \( ~' _1 {. ?- W' t$ O' w* v2 k, _3 X* v% f& O1 k
第7:4位HPRE:软件设置AHB的分频系数(具体见参考手册)
* K( K' B" _% q9 t# J5 M
- T0 e  W% h5 B  R* {0 ^
20201008101307795.jpg

, k/ |0 K  K( V' M4 F; Y) A
1 f+ @; Y* N! c: Q  S8 D! |  d第10:8位PPPRE1:软件设置低速APB1(PCLK1)的与分频系数(具体见参考手册)$ B8 y' v$ ^3 V7 M% `% a6 E- O" `

0 Q+ N3 `  r  C1 O" E2 ^6 b5 }
20201008101308154.jpg
) S# h: ]  Q5 j" L; q6 U2 A

4 W9 d7 Z: @& u, W  R第13:11位PPPRE2:软件设置高速APB2(PCLK2)的预分频系数(具体见参考手册)
+ V. O4 m! _) y6 H, J
: j, s' Z, J4 J+ r# `/ U& e+ X
20201008101308173.jpg

$ A9 x/ K$ y) ]: p/ H  q
. x9 [( @) r6 @1 }8 C% o第15:14位ADCPPE:软件设置ADC的时钟频率(最大14Mhz)+ R% H$ C' B' w6 ]1 D
8 o. K  A5 V* L5 H5 [
20201008101308153.jpg
; X; h. d$ W* L

2 J7 x: U8 {0 q( v/ e& t        00:APB2的2分频
) R$ H7 O* n, J: d' d
* i6 D. A+ L0 D: x. \        01:APB2的4分频8 k/ d+ |  y& G  R5 q
, p/ D+ d8 G% I
        10:APB2的6分频) {, C9 Y) H2 r# k
% y& d7 K; _6 e- @
        11:APB2的8分频! F* E1 v) z0 E5 \

) N. O: G; f* D  l1 @4 m2 ?4 c第16位PLLSRC:软件选择PLL的时钟源(关闭PLL时写入)
. t' |0 \1 C& m  D4 _. {, ]- h# `' B. K( c8 b# l  L, \
20201008101308171.jpg
1 j$ B  \  z" X" _% O
2 M7 v3 k/ Y7 g8 S/ B
        0:HSI的2分频作为PLL的输入时钟% x( ?5 b: Y5 W1 ]* W$ N

) Z' A0 J( Z1 J        1:HSE作为PLL的输入时钟
& f7 V' J. x$ P9 S7 }7 g0 `; S- u+ |+ u1 c- i
第17位PLLXTPRE:软件选择HSE作为PLL输入时是否分频
% D/ g  q0 \* V4 I
1 m; `! R9 X, E$ h, m) [" Q: N
# {! j" K0 v$ d( {; a" l2 l, J; c7 |
& Y+ J! {. A4 A0 r/ L+ S5 L
        0:HSE不分频) Q7 W& X; |9 g. c+ h

: r* M8 s, ~* a( v, X        1:HSE 2分频! V' t' v" F% [" C- G4 h

: z) W! K' _3 ?: K" W: Y4 t第21:18位PLLMUL:软件设置PLL的倍频系数(最高不超过72M,实测超过100M后还能工作)6 Y# c  w' T2 X

, |4 Q1 O: a1 n% ]/ |
20201008101307972.jpg
, Z; j  }5 V; G. A9 Y, {/ y* A2 E
. l* z; l- `- s% i1 G) K
        详见参考手册
$ r# L" z" c; t- Y" y! c
6 o1 P. }5 N) Y, ^第22位USBPRE:软件设置USB时钟
" E: \) b  m. m& ]- \! \: O/ Y, \: ?5 s% y4 V
20201008101308155.jpg

# K  o  k( I* j- z& \7 Y
- [- C- G- P" D  j1 Z        0:PLL时钟1.5倍分频作为USB时钟7 Q3 D' F& ~6 U
( w+ y/ ~+ c1 H" Z: K, N0 V
        1:PLL直接作为USB时钟% i: e! j1 X4 S& _$ T0 v" G
8 t  `  @/ c( d' _+ E" x
第26:24位MCO:时钟输出PA8引脚(对于STM32F1来说,最高频率不能超过IO口的频率50Mhz)8 k& A2 l, `& E, K  w( Y# s9 S/ W
" l2 _1 t, ~& Q4 P

8 r1 E5 B4 Q, E! J& _# W3 C) T  V. K$ v
        0xx:无输出
8 f' k$ W( |$ {# Q, b2 t$ F7 S1 F
6 q* N- j, ^  [/ Q1 U, x& o        100:输出系统时钟SYSCLK4 {: Y( A% n: d2 l$ }
1 u) P6 F+ C* z$ [0 v4 M
        101:HSI输出
8 M' ^. K: p% P
0 ]) E- P; }$ Z$ v4 z) \" }+ S        110:HSE输出9 ?; ^' @5 W. a# L' C) a5 p. E
$ r: p& D* R" b8 L4 L
        111:PLL的2分频输出
/ W, l* Q8 @2 O" t$ y. h0 f$ i& u8 i. A3 @, y* S" N' Z
* T5 |& H+ R+ q7 i

/ [. Y! z( d! n0 q+ V3、时钟中断寄存器RCC_CIR; M* u: g; t4 o/ @
0 [. V3 T! h! X- j
4、APB2外设复位寄存器(RCC_APB2RSTR)
$ c- K7 m) s  ^- G. r
% ?9 S3 t7 P+ A对应位写1复位相应外设,写0无作用
0 p- D: k  S5 q. P: l; G+ b( q# ~
20201008101308262.jpg
3 Z  {( f/ S8 [$ S1 `4 ]
% d; D" C% ~# T* c" @( W
5、APB1 外设复位寄存器 (RCC_APB1RSTR)+ m2 ~2 q. E( n% R+ C
4 }7 Q; ?" |$ b" K& w- A5 g
对应位写1复位相应外设,写0无作用
' a6 I) u+ j4 G4 @) k( ~! x9 ~; n0 [/ x3 j: c
20201008101308280.jpg

2 u$ I" s2 \; K6 I, y7 G8 h( m
2 |/ ~- p' ^6 E  b% { 6、  AHB外设时钟使能寄存器 (RCC_AHBENR)   
0 K6 u2 }6 H: e8 a3 s: e: a' J9 q5 m& ^
对应位写1开启相应外设,写0关闭外设7 O: s  I8 T- y

9 u" r3 {1 U$ O1 C! [( x+ T$ z
( O7 q" H# J$ h$ ]

8 d. r( E0 t- Z& x7、 APB2 外设时钟使能寄存器(RCC_APB2ENR)
/ B2 f2 o8 Z: |; E" U, `& V
5 m2 ]& u# t2 X, W: J对应位写1开启相应外设,写0关闭外设
, p: O( R6 b" `9 t8 ^  M+ a8 M) B2 S! I$ O2 C
. b5 a, Q$ @3 B) ]  U
' k8 Y! p' e: O- Q# g# s
8、 APB1 外设时钟使能寄存器(RCC_APB1ENR)- _5 D. S1 a2 R4 I

3 T$ E( m0 X( s 对应位写1开启相应外设,写0关闭外设
0 ]- a$ k; t8 M5 g3 M: g) t  K' G! ~5 O! l

# h$ J+ N2 Q9 U! p- ]- O& A8 x( K$ A- g! l5 Q
9、备份域控制寄存器 (RCC_BDCR)
7 F9 p% }( k3 T* S1 }( T
( F/ B8 i* U0 D3 ^8 g: @
20201008101308229.jpg

' L! j% G. r/ S) r' b$ x
( c. x( i$ O1 Z% @; W第0位LSEON:软件设置,外部低速振荡器使能:0:关闭,1:开启;9 [% @; R2 ^6 g9 P
5 G7 Z4 t' Y* u7 a, K& P
第1位LSERDY:硬件指示,外部低速LSE就绪:0:未就绪,1:就绪;
% \2 ?* z4 J6 e6 J8 F; T
- h; v+ @* K& D: a第15位RTCEN:RTC时钟使能:0:关闭,1开启;% ]. d$ d- R! S8 {0 C% N$ [
0 @& _% T9 {, O* u& \3 {  s
10、控制/状态寄存器(RCC_CSR)1 g7 ?+ M% ?% m

+ i8 X2 u% A8 j/ _+ a" B- V
20201008101308238.jpg

# K  I6 G- R( j* K) e- |) m  v) D
$ [3 X6 u$ c7 y) r第0位LSION:软件设置,内部低速振荡器就绪:0,:40kHz振荡器时钟就绪
4 e$ p8 l: I- u
7 R) T3 V. D) D( x8 h第1位LSIRDY:硬件指示,内部低速振荡器就绪:1:就绪,0:未就绪;! L' ]9 I/ F0 r/ ?
. w0 {" f  o% _! K
第29位IWDGRSTF窗口看门狗复位标志:1:发生窗口看门狗复位;0:未发生+ k; `- \# s( i' A# e8 j

1 W7 a! u( o9 p1 h) t, H3 D第30位WWDGRSTF独立看门狗复位标志:1:发生独立看门狗复位;0:未发生5 d; J2 b  @/ G
/ v3 m2 q' Z+ `
+ B! \, @2 d  e( `/ ^; z
主要相关库函数:
. Y3 [* Q# x' N: i, ]( j, B. _* O) ~* t! M4 @2 f- I
1、void RCC_DeInit(void);//将外设RCC寄存器设为缺省值;3 l. [0 h8 u, ~! K# X

' F+ b9 A9 {$ R7 |2、void RCC_HSEConfig(uint32_t RCC_HSE);//设置外部高速晶振(HSE);
3 N2 t5 P& m- U/ M/ x
& T4 F4 J' b. I7 D6 ]& Y3、void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue);//调整内部高速晶振(HSI)校准值
1 [+ ~0 d$ y3 [) S5 N* w1 K" {3 E0 N; Y9 S* l
4、void RCC_HSICmd(FunctionalState NewState);//使能或者失能内部高速晶振(HSI)/ e( c& `9 F& Z& U& s
6 y5 }& F/ m, H8 h8 |% I# l# w
5、void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul);//设置PLL时钟源及倍频系数- q/ m( e: l% w5 l( U

5 R8 Z% X2 D% r6、void RCC_PLLCmd(FunctionalState NewState);//使能或者失能PLL; Q. u: n. H+ [

$ U( ~( v2 \6 v5 N2 }5 m7、void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource);//设置系统时钟(SYSCLK)源5 C- S4 n% U/ @( j; ?, I
# B9 n( e0 h+ |9 M
8、void RCC_HCLKConfig(uint32_t RCC_SYSCLK);//设置AHB时钟(HCLK)
7 r+ c6 }- X  p$ {( q& ^! R+ }) f  }
* l0 ?) E$ g$ x0 n; T9、void RCC_PCLK1Config(uint32_t RCC_HCLK);//设置低速AHB时钟(PCLK1)* f' r% N) `# Q
6 O9 N% Y' E6 y# ~+ [( U
10、void RCC_PCLK2Config(uint32_t RCC_HCLK);//设置高速AHB时钟(PCLK2)
9 w4 z+ X# ]) h! c$ Q5 b" B2 Z$ |7 ^3 n: q% J2 D8 l
11、void RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState);//使能或者失能指定的RCC中断- F# K3 s! ]8 r( S$ b& {

2 b. a, H. X' d0 ]6 f$ W12、 void RCC_USBCLKConfig(uint32_t RCC_USBCLKSource);//设置USB时钟(USBCLK)9 J0 u2 T) }! y1 C8 C: T( }3 t

( T2 t3 W* x4 k7 I4 f( P13、void RCC_ADCCLKConfig(uint32_t RCC_PCLK2);//设置ADC时钟(ADCCLK)6 G4 ?, f- ~% x% j* h$ h6 r# W  \
- {$ f: {4 q8 i5 @7 T
14、void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);//使能或者失能AHB外设时钟
+ ~$ |) {0 A2 ^: `2 C8 P! z; F) j1 G1 N! e$ S
15、void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);//使能或者失能APB2外设时钟( H5 \: W5 T- C1 [
+ v5 S" z: Z- a
16、void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);//使能或者失能APB1外设时钟
! Y. c6 W) o2 z% N4 l0 B/ P) `8 y7 q3 e
17、void RCC_AHBPeriphResetCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);//强制或者释放高速AHB外设复位
+ Z* G( P' l" [' S) a5 B: @  v/ n2 U' [4 T6 O8 N
18、void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);//强制或者释放高速APB(APB2)外设复位$ j6 u8 {9 P2 u2 ~; I* {

/ w1 B8 Z: h" a' w! Q19、void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);//强制或者释放低速APB(APB1)外设复位
" w- _. ?, l3 w& [, F$ g8 K+ l' _
20、void RCC_ClockSecuritySystemCmd(FunctionalState NewState);//使能或者失能时钟安全系统% |$ L/ }/ y* M: \7 u3 x. y/ G
4 V, {+ u1 U) J; ^4 H
21、void RCC_MCOConfig(uint8_t RCC_MCO);//选择在MCO管脚上输出的时钟源,警告:当选中系统时钟作为MCO管脚的输出时,注意它的时钟频率不超过50MHz(最大I/O速率)。# y( g! a4 `7 _$ S4 Y- z7 T
! w' ~# K  s1 {% ]6 E
22、FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG);//检查指定的RCC标志位/ S# R5 ~* f, D$ b( S2 p
. e4 S# v! m0 P6 n  Z
//RCC_FLAG_HSIRDY ,HSI晶振就绪;RCC_FLAG_HSERDY ,HSE晶振就绪;
6 g9 r5 [) C0 s! P  u" s5 q$ f+ I$ t# k4 w: C( o) o
//RCC_FLAG_PLLRDY ,PLL就绪;RCC_FLAG_LSERDY ,LSI晶振就绪;8 T# p; d" B- P

# |7 y. }6 [1 F' J+ y1 {9 O4 n//RCC_FLAG_LSIRDY ,LSE晶振就绪;RCC_FLAG_PINRST ,管脚复位 ;
6 T& `' L3 h% r0 w$ x
1 t% n& P9 o# J- T7 e, E" u//RCC_FLAG_PORRST ,POR/PDR复位;RCC_FLAG_SFTRST ,软件复位 ;; K# d  e( o! W* C2 B  d- n. j

9 o% Y; h3 \6 D6 Y, M; b//RCC_FLAG_IWDGRST ,IWDG复位;RCC_FLAG_WWDGRST ,WWDG复位;
6 s, ]0 O& v, i6 N& j
+ y) H7 P8 s! y. J4 L/ [$ w//RCC_FLAG_LPWRRST ,低功耗复位, n  s+ ]8 ~4 B: F
4 O0 R" X! h* r! R6 H
23、void RCC_ClearFlag(void);//清除RCC的复位标志位& J% g: c# w: V7 i5 V& T
! B2 Z5 T$ ?9 ]
24、ITStatus RCC_GetITStatus(uint8_t RCC_IT);//检查指定的RCC中断发生与否6 L! t9 S# X3 P- o. m, i" H/ Q% X

$ u( d% Q, c. _9 C4 V2 S//输入:RCC_IT_LSIRDY,LSI晶振就绪中断;RCC_IT_LSERDY,LSE晶振就绪中断
$ t# r0 D/ p. f  a
& v: S$ j4 V0 z% U& u//RCC_IT_HSIRDY,HSI晶振就绪中断;RCC_IT_HSERDY,HSE晶振就绪中断
. @9 Y' s$ [* I: ?4 h1 A# k3 ~" Q8 R, U; W- ^1 }" A; d1 \
//RCC_IT_PLLRDY,PLL就绪中断;RCC_IT_CSS,时钟安全系统中断+ }" Q* g4 a4 u7 v8 O

- _, ?( g# E0 F! t- @/ p, X; i. x' V25、void RCC_ClearITPendingBit(uint8_t RCC_IT);//清除RCC的中断待处理位
) I  ^0 N0 Z1 R' \: a7 S$ y2 w1 X& B2 e8 L5 L+ M2 h
//RCC_IT_LSIRDY,LSI晶振就绪中断;RCC_IT_LSERDY,LSE晶振就绪中断, K% h2 c2 `) l& L1 c

9 D: c( k) L# y//RCC_IT_HSIRDY,HSI晶振就绪中断;RCC_IT_HSERDY,HSE晶振就绪中断
/ A3 x% h) a$ g9 l% |- F! F/ U4 |5 {0 z; v9 }" J, s8 a# X
//RCC_IT_PLLRDY,PLL就绪中断;RCC_IT_CSS,时钟安全系统中断8 e4 ]* z7 i% E1 A* S# o

; j- Z, i: F/ E  Q
! T% s" k- C6 z. @9 H7 \
20201008101308453.png
20201008101308258.jpg
20201008101308274.jpg
收藏 评论0 发布时间:2021-11-27 10:06

举报

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