单片机
返回首页

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

2024-03-28 来源:elecfans

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外设

}


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 家用电器遥控器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • DS1669数字电位器

  • HA1377 桥式放大器 BCL 电容 17W(汽车音频)

    相关电子头条文章