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

【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, 下载次数: 366

收藏 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
请问第二张图是哪份文档里的?
spfanlost 回答时间: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
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版