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

【STM32F429开发日志】(二):STM32F429之时钟配置(另曝高清照片)

[复制链接]
hgqlyl 发布时间:2014-7-14 20:59
     时钟,也就是给芯片提供节拍的东西,芯片各个组件根据时钟节拍执行着各自的工作,并且根据时钟节拍进行相互合作。其实说白了就像干活时喊的号子一样,“一二一二......”大家根据号子声一起使劲,相互合作。
3 n, {) }3 j# _" Z
STM32的时钟不像8051的那么简单,但是也不像飞思卡尔芯片的那么复杂。总体来说STM32的时钟树走向清晰。
: l) R9 F4 E8 n1 d( M5 u
接下来我将按照从前到后的顺序进行讲解:
( X8 M& Z- u" ^
l  首先我们追根溯源,看看STM32的时钟源,STM32一共有4个时钟源,分别是:
' P# c3 c2 q9 s: r+ z1 k
Ø  LSI内部低速时钟

4 {. T1 O$ v0 {# x5 D5 V& ^
Ø  HSI内部高速时钟

1 p$ ]/ ~1 l3 V+ U1 i( E. ]5 J
Ø  LSE外部低速时钟
  Q0 L, U5 c* z5 V/ w0 {
Ø  HSE外部高速时钟

0 f& t7 p# ?: u6 Q% j    但是只有HSE和HSI能够用来作为内核时钟源,另外两个时钟源只能够用来给实时时钟和看门狗提供时钟。
1 y' {2 G3 K0 l0 A在本例程中选用外部高速时钟作为时钟源,因此需要置位RCC_CR[HSEON]来打开HSE时钟,除此之外还有一个标志位RCC_CR[HSERDY]用来指示HSE是否准备好。% x( q: d& |% ^; G
) D6 `7 I# @! Y7 [
 
2 r& v# q! R/ Q/ k2 M
RCC->CR |= ((uint32_t)RCC_CR_HSEON);                           /* 使能 HSE                */

* X% p; Z+ M. m9 Y# i& Q8 c
do

) l7 D! c! a) j. ^. S5 C- f
{
  N& T8 x3 t: l! k" o
HSEStatus = RCC->CR & RCC_CR_HSERDY;

( ~: B; c3 w2 Z; Z0 k1 J
}while (HSEStatus==0);                                           /* 等待外部时钟稳定         */

" g( @/ f/ I; v) Q' N) p
8 s7 Y% s% U4 W7 G3 l' D' O& N
 

8 z7 e/ C; a& o1 p
l  接下来我们可以看到一个多路选择器,它的作用是用来选择内核时钟源,STM32一共有3个时钟可以用来驱动内核(SYSCLK):

. k& H0 N9 Y7 l3 G8 `
Ø  HSI内部高速时钟
: b8 q1 y; W, j! n
Ø  HSE外部高速时钟

0 |0 m( N: S! y8 s* \
Ø  PLL时钟
- @( @$ H" D" l& i2 Z- A
    它们通过RCC_CFGR[SW]位进行选择,除此之外同样还有一个标志位RCC_CFGR[SWS]用于标志选择成功与否。
5 ^3 p0 Q( c4 Z8 q* C很显然,使用HIS和HSE直接作为内核时钟源是不切实际的,频率太低,因此需要选用PLL时钟。
! L% l! q/ d+ w- E& Q; r: r; b3 h, ^) W" P, o  M: w5 J
 
3 g1 p; q& X. cRCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));* `) L) ^, w# |  X
RCC->CFGR |= RCC_CFGR_SW_PLL;                            /* 选择PLL时钟作为系统时钟   */0 y" \( F6 u: j0 Z
while ((RCC->CFGR & RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL); /* 等待PLL作为系统时钟完成   */
/ R( C% T: d" |" `$ Q! _/ W9 d7 Q: X; y# |9 r) @) b4 |
 
0 H5 g1 R" B. vl  上面我们提到直接使用晶体时钟作为内核时钟源是不太切合实际的,需要使用PLL时钟作为时钟源。那么PLL时钟是怎么来的呢?我们看时钟树图,PLL时钟是从一个叫PLL的模块中得到的。% K$ r' Y: T! T, w
PLL的时钟又是哪里来的呢?我们接着往前看,可以看到PLL的时钟是由HSE和HIS时钟分频得到的(分频因子为M),HSE和HIS通过一个多路选择器进行选择,多路选择器通过RCC_PLLCFGR[PLLSRC]进行选择的。5 {) w  ]: D8 F" G) f: p& b
说了这么长时间的PLL,PLL到底是啥呢,PLL中文名叫锁相环,英文名叫Phase Locking Loop。其实我们在使用中并不用关心其原理,只需要知道它是将频率倍频、分频至我们需要的频率的一个东西。
. y. I* b& {" X# j+ b( v6 v0 i接下来我们剖析一下PLL模块,可以看到有VCO、xN、/P、/Q、/R等标志。VCO的全称是电压控制振荡器,xN就是VCO的倍频因子,/P、/Q、/R分别是输出的分频因子。其中/P的输出就是PLLCLK,也就是我们需要的时钟。
1 V/ V: h2 i7 t4 I6 y, g3 x6 U; U8 {在本例程中倍频、分频因子的数值分别是:
' e9 f. h8 Q+ s  @0 B, q4 zØ  /M = 4
  V( S8 u, b* \* h; d7 KØ  xN = 360* ^& o/ ~; \5 h9 D# }
Ø  /P = 4
& a5 Y4 b' P1 Y, l' \1 v% JØ  /Q = 15
) h7 _. I. v6 j- N    HSE时钟,也就是外部晶振时钟,STM32F429 Discovery board板载晶振为8MHz。
5 Q5 g* i- l) m6 H" M经过/M分频,8/4=2MHz( H  t( F, v% V* C2 ?1 J: X
经过xN倍频,2*360 = 720MHz. K/ y  U! ~* V! Z1 l* o1 f  D
经过/P分频,720/4 = 180MHz
0 P2 P; m" ~7 t3 L  R7 H9 D经过/Q分频,720/15 = 48MHz: Q' k/ X! W1 `" ?6 \

7 s* j# h/ _& V0 {+ G- i1 @) Z 6 p2 {, |+ G. r5 l1 F
RCC-&gtLLCFGR  = 0;! u/ C. g/ j8 C& v
RCC-&gtLLCFGR |= ( PLL_M) | 4 K$ |4 {- e8 M8 h2 n4 @6 C
                 ( PLL_N > 1) -1) CR & RCC_CR_PLLRDY) == 0);                  /* 等待PLL稳定                  */+ l; H8 y; l! c5 X- H( g1 \

* s4 G& p- y4 M9 z% W/ B2 |7 s 
( D( r/ @4 v, c2 H, [, O! D2 }4 X    在这里想提醒注意一下“((PLL_P >> 1) -1) APB1ENR |= RCC_APB1ENR_PWREN;  </strong>
. e+ o/ n9 V# CPWR->CR |= PWR_CR_VOS;0 q. u; ]: U1 P3 G6 f1 b  g
while((PWR->CSR & PWR_CSR_VOSRDY) == 0);% l0 \: ?! {/ `- U& U/ H, m
PWR->CR |= PWR_CR_ODEN;                               /* 超级驱动使能                  */
( F0 n. Z! u& P6 V# N: }' V+ R4 iwhile((PWR->CSR & PWR_CSR_ODRDY) == 0);                /* 等待稳定                      */
: v8 G6 `# l3 ]8 p" g( }  SPWR->CR |= PWR_CR_ODSWEN;                            /* 超级驱动切换使能              */
# n3 \, f( g, h" E- Bwhile((PWR->CSR & PWR_CSR_ODSWRDY) == 0);             /* 等待稳定                      */$ @2 N7 ], l* w3 `9 [
" n: b$ d2 D# j
 
0 T6 D( f( x  c/ ]2 M2 x  u 搜狗截图20140714203343.png ! ?" J) w/ }. n2 [
    Flash的访问速度较内核运算速度要低很多,因此需要设置一个等待周期以保证Flash与内核的同步。
; U  {* R2 d; m$ F3 m1 n" I# H
2 u8 P. Z7 v0 @% [; x 8 R+ \: w7 K* k$ I" B
FLASH->ACR   = FLASH_ACR_PRFTEN |                    /* 预取指使能                    */
& Q7 O0 p& [) T) {& h7 O7 t                 FLASH_ACR_ICEN |                       /* 指令高速缓冲使能              */% t7 `: ~9 E# d) [8 j
                 FLASH_ACR_DCEN |                      /* 数据高速缓冲使能              */" t7 x  i8 {% E0 R7 P) e
                 FLASH_ACR_LATENCY_5WS;             /* 等待5个CPU时钟               */
- T/ W0 {% Q! I' ?9 p* i2 Z设置AHB、APB1、APB2的分频因子,以匹配外设访问速度:
4 a! N+ i5 M7 ]RCC->CFGR |= RCC_CFGR_HPRE_DIV1;                     /* AHB =SYSCLK                  */
/ Y) [5 ^9 w. E/ FRCC->CFGR |= RCC_CFGR_PPRE2_DIV2;                    /* APB2=SYSCLK 2分频            */& i5 d. t) ]1 O; M# |) V% C' v
RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;                    /* APB1=SYSCLK 4分频            */$ \. a, b7 u9 c4 r( `
 * ^% p/ {% ^7 Q+ y  \
    到此,STM32F429的基础时钟配置基本上是完成了,有了以上配置,单片机的基础外设都能够运行,高级外设时钟需要另行配置。& j4 \0 U& v1 T6 T
最后曝两张高清照片,请诸君品鉴:2 j1 [$ F9 m$ G  L7 q% j' W
stm32f429时钟树.png % `' o7 P8 _8 h: J/ b
2014-07-14_10-01-00.png
搜狗截图20140714203546.png

STM32F429 Discovery Kit Demo.rar

下载

123.66 KB, 下载次数: 368

赞 收藏 2 评论13 发布时间:2014-7-14 20:59

举报

13个回答
tungcena 回答时间:2014-8-25 16:29:55

回复:【STM32F429开发日志】(二):STM32F429之时钟配置(另曝高清照片)

 thank you for your sharing!!
je00 回答时间:2015-6-14 10:32:59
请问第二张图是哪份文档里的?
YUMENG 回答时间:2016-9-21 16:55:05
je00 发表于 2015-6-14 10:32
* T# m5 E# ^7 ^请问第二张图是哪份文档里的?

2 |0 n- R) J1 I# _) d0 l& A我也想知道,找了好久
stary666 回答时间:2016-10-8 16:10:48
这要顶,,,,,,,,,,
liu_guangjun 回答时间:2016-11-2 16:29:07
谢谢分享!!
黑皮男 回答时间:2016-11-3 08:09:13
感谢分享
高二毛 回答时间:2016-11-3 08:33:36
感谢分享!!
zengyi703-16313 回答时间:2016-11-4 08:08:56
顶起,学习了
dontium 回答时间:2016-12-24 23:20:14
手册上交待VC的频率不能大于432MHZ,楼主使用720MHZ可以吗? a1.jpg
2 f2 Q* Z3 B1 [, |) n
5265325 回答时间:2016-12-25 23:56:03
斜阳 回答时间:2016-12-26 10:08:51
谢谢分享
5265325 回答时间:2016-12-26 10:25:32
zbber 回答时间:2016-12-26 10:41:49
谢谢分享,不错,真是太棒了!7 J) ]# m( O6 I- G3 v

所属标签

相似技术帖

官网相关资源

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