码迷,mamicode.com
首页 > 其他好文 > 详细

stm32之RCC寄存器学习

时间:2017-11-05 12:15:32      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:寄存器   control   eset   控制   flash   影响   fetch   2.7   除了   

RCC(Reset Clock Controller) —— 复位与时钟控制

一、复位

STM32F10xxx支持三种复位形式,分别为系统复位、上电复位和备份区域复位。 

系统复位:除了时钟控制器的RCC_CSR寄存器中的复位标志位和备份区域中的寄存器以外,系统
复位将复位所有寄存器至它们的复位状态。

电源复位:将复位除了备份区域外的所有寄存器。  

备份区域复位:备份区域拥有两个专门的复位,它们只影响备份区域。

技术分享

 

 

二、时钟

有四种时钟:高速外部时钟信号(HSE)—— HSE外部晶体/陶瓷谐振器 、HSE用户外部时钟

      高速内部时钟信号(HSI)—— 由内部8MHzRC振荡器产生

      低速外部时钟信号(LSE)—— 32.768kHz的低速外部晶体或陶瓷谐振器

      低速内部时钟信号(LSI)—— LSI时钟频率大约40kHz(30kHz60kHz之间)

时钟的输出:微控制器允许输出时钟信号到外部MCO引脚。 可以时钟配置寄存器来选择输出的时钟。

技术分享

 

其中:

PLLMUL 用于设置 STM32 PLLCLKSTM32 支持 2~16 倍频设置。我们常用
的是 8M 外部晶振+9 倍频设置,刚好得到 72Mhz PLLCLK

SW STM32 SYSCLK(系统时钟)切换开关,从上图可以看出, SYSCLK
来源可以是 3个:HSIPLLCLKHSE

CSS是时钟安全系统,可以通过软件被激活。一旦其被激活,时钟监测器将在HSE振荡器启动延迟后被
使能,并在HSE时钟关闭后关闭 。

三、时钟启动过程

1、开机或复位时使用内部时钟
2、用软件进行切换,尝试开启外部时钟
3、如果开启成功,则使用外部时钟,否则使用内部

四、配置时钟的步骤

1、APB1、APB2的外设接口复位结束(即RESET),关闭APB1、APB2的外设时钟 

  打开内部8MHz振荡器,复位RCC->CFGR中的SW[1:0]、HPRE[3:0]、PRE1[2:0]、PRE2[2:0]、ADCPRE[2:0]、MCO[2:0]

  复位RCC->CR中的HSEON、CSSON、PLLON、HSEBYP

  复位RCC->CFGR中的PLLSRC、PLLXTPRE、PLLMUL[3:0]USBPRE

  关闭RCC->CIR中的所有中断

2、使能外部高速时钟晶振HSE

3、等待外部高速时钟晶振工作稳定

4、设置AHB时钟的预分频(在这之前要先执行FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); FLASH_SetLatency(FLASH))

5、设置APB1时钟的预分频

6、设置APB2时钟的预分频

7、设置PLL的时钟源以及PLL的倍频数,然后使能PLL

8、等待PLL工作稳定

9、选择SYSCLK的时钟源

10、判断PLL是否是系统时钟(若选择SYSCLK的时钟源是PLL的话)

11、打开要使用的外设时钟

 

stm32之RCC寄存器学习

标签:寄存器   control   eset   控制   flash   影响   fetch   2.7   除了   

原文地址:http://www.cnblogs.com/Recca/p/7786967.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!