基于STM32单片机的USB时钟配置设计

  • 格式:pdf
  • 大小:78.80 KB
  • 文档页数:7
基于 STM32 单片机的 USB 时钟配置设计
1.首先要配置好系统的时钟如下: RCC_DeInit();//将外设 RCC 寄存器重设为缺省值 /*EnableHSE*/ RCC_HSEConfig(RCC_HSE_ON);//设置外部高速晶振(HSE) /*WaittillHSEisready*/ HSEStartUpStatus=RCC_WaitForHSEStartUp();//等待 HSus==SUCCESS)
/*IfHSEfailstostart-up,theapplicaTIonwillhavewrongclockconfiguraTIon. Usercanaddheresomecodetodealwiththiserror*/ /*Gotoinfiniteloop*/ while(1) { } } voidUSBclock_Config()
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) { }
{ /*EnablePrefetchBuffer*/ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//使能或者 失能预取指缓存 /*Flash2waitstate*/ FLASH_SetLatency(FLASH_Latency_2);//设置代码延时值 /*HCLK=SYSCLK*/ RCC_HCLKConfig(RCC_SYSCLK_Div1);//设置 AHB 时钟(HCLK) /*PCLK2=HCLK*/
{ RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);//1.5 分 频 /*EnabletheUSBclock*/ RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB,ENABLE);//此处 是激活 USB 外设,USB 属于 APB1 外设 }
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_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//配置 SYSCLK /*WaitTIllPLLisusedassystemclocksource*/ while(RCC_GetSYSCLKSource()!=0x08) { } } else {