STM 32的USB时钟的配置

1.首先要配置好系统的时钟如下:

RCC_DeInit();//将外设RCC寄存器重设为缺省值
  /* Enable HSE */
  RCC_HSEConfig(RCC_HSE_ON);//设置外部高速晶振(HSE )
  /* Wait till HSE is ready */
  HSEStartUpStatus = RCC_WaitForHSEStartUp();//等待HSE 起振,等待外部的时钟起振
  if (HSEStartUpStatus == SUCCESS)
  {
    /* Enable Prefetch Buffer */
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);  //使能或者失能预取指缓存
    /* Flash 2 wait state */
    FLASH_SetLatency(FLASH_Latency_2);//设置代码延时值 
 
    /* HCLK = SYSCLK */
    RCC_HCLKConfig(RCC_SYSCLK_Div1);//设置AHB时钟(HCLK) 
  
    /* PCLK2 = HCLK */
    RCC_PCLK2Config(RCC_HCLK_Div1);//设置高速AHB时钟(PCLK2) to APB2
    /* PCLK1 = HCLK/2 */
 //stm32的时钟比较复杂
    RCC_PCLK1Config(RCC_HCLK_Div2); //设置高速AHB时钟(PCLK1)to APB1
    
    /* ADCCLK = PCLK2/8 */
    RCC_ADCCLKConfig(RCC_PCLK2_Div8); //设置ADC时钟(ADCCLK)  
    /* PLLCLK = 8MHz * 9 = 72 MHz */
   //设置外部时钟源,且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,必须最后才激活!
    /* Wait till PLL is ready */
    while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
    {
    }
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//配置SYSCLK
    /* Wait till PLL is used as system clock source */
    while(RCC_GetSYSCLKSource() != 0x08)
    {
    }
  }
  else
  {
 /* If HSE fails to start-up, the application will have wrong clock configuration.
       User can add here some code to deal with this error */   
    /* Go to infinite loop */
    while (1)
    {
    }

  }
void USBclock_Config()
{
RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);//1.5分频
  
  /* Enable the USB clock */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, ENABLE);//此处是激活USB外设,USB属于APB1外设
}


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

john_liqinghan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值