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

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

[复制链接]
hgqlyl 发布时间:2014-7-14 20:59
     时钟,也就是给芯片提供节拍的东西,芯片各个组件根据时钟节拍执行着各自的工作,并且根据时钟节拍进行相互合作。其实说白了就像干活时喊的号子一样,“一二一二......”大家根据号子声一起使劲,相互合作。
STM32的时钟不像8051的那么简单,但是也不像飞思卡尔芯片的那么复杂。总体来说STM32的时钟树走向清晰。

接下来我将按照从前到后的顺序进行讲解:

l  首先我们追根溯源,看看STM32的时钟源,STM32一共有4个时钟源,分别是:

Ø  LSI内部低速时钟

Ø  HSI内部高速时钟

Ø  LSE外部低速时钟

Ø  HSE外部高速时钟

    但是只有HSEHSI能够用来作为内核时钟源,另外两个时钟源只能够用来给实时时钟和看门狗提供时钟。
在本例程中选用外部高速时钟作为时钟源,因此需要置位RCC_CR[HSEON]来打开HSE时钟,除此之外还有一个标志位RCC_CR[HSERDY]用来指示HSE是否准备好。

 

RCC->CR |= ((uint32_t)RCC_CR_HSEON);                           /* 使能 HSE                */

do

{

HSEStatus = RCC->CR & RCC_CR_HSERDY;

}while (HSEStatus==0);                                           /* 等待外部时钟稳定         */


 

l  接下来我们可以看到一个多路选择器,它的作用是用来选择内核时钟源,STM32一共有3个时钟可以用来驱动内核(SYSCLK):

Ø  HSI内部高速时钟

Ø  HSE外部高速时钟

Ø  PLL时钟

    它们通过RCC_CFGR[SW]位进行选择,除此之外同样还有一个标志位RCC_CFGR[SWS]用于标志选择成功与否。
很显然,使用HISHSE直接作为内核时钟源是不切实际的,频率太低,因此需要选用PLL时钟。

 
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
RCC->CFGR |= RCC_CFGR_SW_PLL;                            /* 选择PLL时钟作为系统时钟   */
while ((RCC->CFGR & RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL); /* 等待PLL作为系统时钟完成   */

 
l  上面我们提到直接使用晶体时钟作为内核时钟源是不太切合实际的,需要使用PLL时钟作为时钟源。那么PLL时钟是怎么来的呢?我们看时钟树图,PLL时钟是从一个叫PLL的模块中得到的。
PLL的时钟又是哪里来的呢?我们接着往前看,可以看到PLL的时钟是由HSEHIS时钟分频得到的(分频因子为M),HSEHIS通过一个多路选择器进行选择,多路选择器通过RCC_PLLCFGR[PLLSRC]进行选择的。
说了这么长时间的PLLPLL到底是啥呢,PLL中文名叫锁相环,英文名叫Phase Locking Loop。其实我们在使用中并不用关心其原理,只需要知道它是将频率倍频、分频至我们需要的频率的一个东西。
接下来我们剖析一下PLL模块,可以看到有VCOxN/P/Q/R等标志。VCO的全称是电压控制振荡器,xN就是VCO的倍频因子,/P/Q/R分别是输出的分频因子。其中/P的输出就是PLLCLK,也就是我们需要的时钟。
在本例程中倍频、分频因子的数值分别是:
Ø  /M = 4
Ø  xN = 360
Ø  /P = 4
Ø  /Q = 15
    HSE时钟,也就是外部晶振时钟,STM32F429 Discovery board板载晶振为8MHz
经过/M分频,8/4=2MHz
经过xN倍频,2*360 = 720MHz
经过/P分频,720/4 = 180MHz
经过/Q分频,720/15 = 48MHz

 
RCC-&gtLLCFGR  = 0;
RCC-&gtLLCFGR |= ( PLL_M) |
                 ( PLL_N > 1) -1) CR & RCC_CR_PLLRDY) == 0);                  /* 等待PLL稳定                  */

 
    在这里想提醒注意一下“((PLL_P >> 1) -1) APB1ENR |= RCC_APB1ENR_PWREN;  </strong>
PWR->CR |= PWR_CR_VOS;
while((PWR->CSR & PWR_CSR_VOSRDY) == 0);
PWR->CR |= PWR_CR_ODEN;                               /* 超级驱动使能                  */
while((PWR->CSR & PWR_CSR_ODRDY) == 0);                /* 等待稳定                      */
PWR->CR |= PWR_CR_ODSWEN;                            /* 超级驱动切换使能              */
while((PWR->CSR & PWR_CSR_ODSWRDY) == 0);             /* 等待稳定                      */

 
搜狗截图20140714203343.png
    Flash的访问速度较内核运算速度要低很多,因此需要设置一个等待周期以保证Flash与内核的同步。

 
FLASH->ACR   = FLASH_ACR_PRFTEN |                    /* 预取指使能                    */
                 FLASH_ACR_ICEN |                       /* 指令高速缓冲使能              */
                 FLASH_ACR_DCEN |                      /* 数据高速缓冲使能              */
                 FLASH_ACR_LATENCY_5WS;             /* 等待5CPU时钟               */
设置AHBAPB1APB2的分频因子,以匹配外设访问速度:
RCC->CFGR |= RCC_CFGR_HPRE_DIV1;                     /* AHB =SYSCLK                  */
RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;                    /* APB2=SYSCLK 2分频            */
RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;                    /* APB1=SYSCLK 4分频            */
 
    到此,STM32F429的基础时钟配置基本上是完成了,有了以上配置,单片机的基础外设都能够运行,高级外设时钟需要另行配置。
最后曝两张高清照片,请诸君品鉴:
stm32f429时钟树.png
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
请问第二张图是哪份文档里的?

我也想知道,找了好久
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
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
谢谢分享,不错,真是太棒了!
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版