<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 牛人業(yè)話(huà) > STM32再學(xué)習——時(shí)鐘初始化

STM32再學(xué)習——時(shí)鐘初始化

作者:jobs 時(shí)間:2013-10-23 來(lái)源:電子產(chǎn)品世界 收藏

  系列,或者說(shuō)是Cortex-M3內核的內,都集成了一個(gè)叫的東西。就是鎖相回路或鎖相環(huán)(Phase Locked Loop),用來(lái)統一整合時(shí)脈訊號,使內存能正確的存取資料。用于振蕩器中的反饋技術(shù),將外部的輸入信號與內部的振蕩信號同步,鎖相環(huán)路的基本方框圖如下圖所示。一句話(huà),PLL用來(lái)控制頻率的??偠灾?,系列使用了這個(gè)東西,而我們在上電之后,也就要對其正確的初始化,這樣,我們才能得到我們需要的配置。

本文引用地址:http://dyxdggzs.com/article/182408.htm

  在ST公司的外設固件庫的示例里,對于工程項目文件,ST并沒(méi)有在啟動(dòng)函數main()里初始化PLL,因為其已經(jīng)在硬件初始化階段完成對系統的配置。這樣也就帶了一個(gè)問(wèn)題,ST庫里的均使用了外設8MHz的晶振,而我們平時(shí)的項目就一定采用的是這個(gè)頻率,實(shí)際配置的低于8MHz,MCU不能全速運行,高于8MHz,外設時(shí)鐘即配置失敗,甚至無(wú)法運行。那么如何重新配置時(shí)鐘就需要我們一線(xiàn)的工程師們重新設計了。

  ST庫里的硬件初始化階段的代碼是用寄存器方式編寫(xiě)的,不利于我們閱讀與參考。也正是出于這個(gè)原因,小編使用庫函數重新編寫(xiě)了STM32F系統時(shí)鐘PLL初始化過(guò)程,與大家分享,期待共同提高與進(jìn)步。

  /*********************************************************************************************************

  ** Function name: static void SysClockInit(void)

  ** Descriptions: 配置SYSCLK, HCLK, PCLK2與PCLK1

  ** Created by: Jobs Zheng

  ** Created Date: 2013-03-06 09:35

  *********************************************************************************************************/

  static void SysClockInit(void)

  {

  RCC_DeInit();/* RCC重置 */

  RCC_HSEConfig(RCC_HSE_ON); /*(使能HSE)*/

  HSEStartUpStatus = RCC_WaitForHSEStartUp();/*(等待HSE使能結束)*/

  if (HSEStartUpStatus == SUCCESS)

  {

  FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

  FLASH_SetLatency(FLASH_Latency_2);

  RCC_HCLKConfig(RCC_SYSCLK_Div1); /* 配置HCLK = SYSCLK */

  RCC_PCLK2Config(RCC_HCLK_Div1); /* 配置PCLK2 = HCLK */

  RCC_PCLK1Config(RCC_HCLK_Div2); /* 配置PCLK1 = HCLK/2 */

  /* 超級重要的、需要配置的地方在這里 */

  /* PLLCLK = 8MHz * 9 = 72 MHz */

  RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /* RCC_PLLSource_HSE_Div1為外置晶振的分頻系數;RCC_PLLMul_9為倍頻數 */

  RCC_PLLCmd(ENABLE);

  while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)

  {

  }

  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /* 選定PLL為系統主時(shí)鐘 */

  while(RCC_GetSYSCLKSource() != 0x08)

  {

  }

  }

  else

  { /* 配置失敗將程序停留在這里 */

  while (1)

  {

  }

  }

  }

  上述C語(yǔ)言的文件仍需要#include "stm32f10x.h"的頭文件來(lái)調用ST固件庫。

  就像ST官方說(shuō)明文檔所說(shuō),STM32F系列MCU支持4M-16MHz的外置晶振,因此,大家在沒(méi)有官方默認的8Mhz晶振下,大可不必苦惱,只需要添加上面的這個(gè)初始化函數,你就可以任意使用外置晶振了。

  祝大家工作順利,編程快樂(lè ) ^_^

 

c語(yǔ)言相關(guān)文章:c語(yǔ)言教程


晶振相關(guān)文章:晶振原理
鎖相環(huán)相關(guān)文章:鎖相環(huán)原理


關(guān)鍵詞: 微處理器 STM32F PLL MCU 時(shí)鐘

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>