您现在的位置: 主页 > MCU > 单片机技术应用 > STM32F407时钟树 -
本文所属标签:
为本文创立个标签吧:

STM32F407时钟树 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]最近学习下STM32F4的芯片,首先还是要了解时钟系统。库函数调用函数static void SetSysClock(void)初始化时钟。依次初始化HCLK、 PCLK2、PCLK1、PLL。最后打开PLLstaticvoidSetSysClock(void){/********************

最近学习下STM32F4的芯片,首先还是要了解时钟系统。库函数调用函数static void SetSysClock(void)初始化时钟。依次初始化HCLK、 PCLK2、PCLK1、PLL。最后打开PLL

本文引用地址: http://www.21ic.com/app/mcu/201808/780864.htm


staticvoidSetSysClock(void)

{

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

/*PLL(clockedbyHSE)usedasSystemclocksource*/

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

__IOuint32_tStartUpCounter=0,HSEStatus=0;

/*EnableHSE*/

RCC->CR|=((uint32_t)RCC_CR_HSEON);

/*WaittillHSEisreadyandifTimeoutisreachedexit*/

do

{

HSEStatus=RCC->CR&RCC_CR_HSERDY;

StartUpCounter++;

}while((HSEStatus==0)&&(StartUpCounter!=HSE_STARTUP_TIMEOUT));

if((RCC->CR&RCC_CR_HSERDY)!=RESET)

{

HSEStatus=(uint32_t)0x01;

}

else

{

HSEStatus=(uint32_t)0x00;

}

if(HSEStatus==(uint32_t)0x01)

{

/*SelectregulatorvoltageoutputScale1mode*/

RCC->APB1ENR|=RCC_APB1ENR_PWREN;

PWR->CR|=PWR_CR_VOS;

/*HCLK=SYSCLK/1*/

RCC->CFGR|=RCC_CFGR_HPRE_DIV1;

/*PCLK2=HCLK/2*/

RCC->CFGR|=RCC_CFGR_PPRE2_DIV2;

/*PCLK1=HCLK/4*/

RCC->CFGR|=RCC_CFGR_PPRE1_DIV4;

/*ConfigurethemainPLL*/

RCC->PLLCFGR=PLL_M|(PLL_N<<6)|(((PLL_P>>1)-1)<<16)|

(RCC_PLLCFGR_PLLSRC_HSE)|(PLL_Q<<24);

/*EnablethemainPLL*/

RCC->CR|=RCC_CR_PLLON;

/*WaittillthemainPLLisready*/

while((RCC->CR&RCC_CR_PLLRDY)==0)

{

}








              查看评论 回复



 

网站地图

围观()