您的位置 首页 新品

根据STM32单片机的USB时钟装备规划

基于STM32单片机的USB时钟配置设计-RCC_DeInit();//将外设RCC寄存器重设为缺省值

/*EnableHSE*/

RCC_HSEConfig(RCC_HSE_ON);//设置外部高速晶振(HSE)

/*WaittillHSEisready*/

HSEStartUpStatus=RCC_WaitForHSEStartUp();//等待HSE起振,等待外部的时钟起振

1.首先要装备好体系的时钟如下:

RCC_DeInit();//将外设RCC寄存器重设为缺省值

/*EnableHSE*/

RCC_HSEConfig(RCC_HSE_ON);//设置外部高速晶振(HSE)

/*WaitTIllHSEisready*/

HSEStartUpStatus=RCC_WaitForHSEStartUp();//等候HSE起振,等候外部的时钟起振

if(HSEStartUpStatus==SUCCESS)

{

/*EnablePrefetchBuffer*/

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//使能或许失能预取指缓存

/*Flash2waitstate*/

FLASH_SetLatency(FLASH_Latency_2);//设置代码延时值

/*HCLK=SYSCLK*/

RCC_HCLKConfig(RCC_SYSCLK_Div1);//设置AHB时钟(HCLK)

/*PCLK2=HCLK*/

RCC_PCLK2Config(RCC_HCLK_Div1);//设置高速AHB时钟(PCLK2)toAPB2

/*PCLK1=HCLK/2*/

//STM32的时钟比较复杂

RCC_PCLK1Config(RCC_HCLK_Div2);//设置高速AHB时钟(PCLK1)toAPB1

/*ADCCLK=PCLK2/8*/

RCC_ADCCLKConfig(RCC_PCLK2_Div8);//设置ADC时钟(ADCCLK)

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

//设置外部时钟源,且PLL等于外部时钟频率*9

RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);

//此刻PLLCLK=72MHz,这个得知道他的值,由于USB的时钟USBCLK=PLLCLK/1或许PLLCLK/1.5,但得保证USBCLK=48MHz

//所以装备USBCLK的时分挑选是1.5分频

RCC_PLLCmd(ENABLE);//最终才激活PLL,有必要最终才激活!

/*WaitTIllPLLisready*/

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)

{

}

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//装备SYSCLK

/*WaitTIllPLLisusedassystemclocksource*/

while(RCC_GetSYSCLKSource()!=0x08)

{

}

}

else

{

/*IfHSEfailstostart-up,theapplicaTIonwillhavewrongclockconfiguration.

Usercanaddheresomecodetodealwiththiserror*/

/*Gotoinfiniteloop*/

while(1)

{

}

}

voidUSBclock_Config()

{

RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);//1.5分频

/*EnabletheUSBclock*/

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB,ENABLE);//此处是激活USB外设,USB归于APB1外设

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/346675.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部