- void RCC_Init(void)
- {
- ErrorStatus HSEStartUpStatus; /* 枚举型变量 */
- RCC_DeInit(); /*重置RCC */
- RCC_HSEConfig(RCC_HSE_ON); /* HSE使能 */
- HSEStartUpStatus=RCC_WaitForHSEStartUp(); /* 等待HSE起振 */
- if(HSEStartUpStatus==SUCCESS) /* 判断HSE起振成功 */
- {
-
- RCC_HCLKConfig(RCC_SYSCLK_Div1); /* 设置AHB时钟HCLK */
- RCC_PCLK1Config(RCC_HCLK_Div2); /* 设置低俗APB1时钟PLCK1*/
- RCC_PCLK2Config(RCC_HCLK_Div1); /* 设置高速APB2时钟PLCK2*/
- RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_6); /* 6倍频 */
- }
- else
- {
- /*do nothing*/
- }
-
-
- RCC_PLLCmd(ENABLE); /* PLL使能 */
- while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET) /* 检查使能标志位 */
- {
- }
- RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /* PLLCLK作为SYSCLK */
- while (RCC_GetSYSCLKSource()!=0x08) /* 判断SYSCLK是否设置成功
- 0x08意思是PLL作为系统时钟 */
- {
- }
- }
-
-
-
- void MCO_GPIO_Config(void) /* GPIO配置 */
- {
- GPIO_InitTypeDef GPIO_InitStruct; /* 结构体定义 */
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /* GPIOA使能 */
- GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8; /* PA8 */
- GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP; /* 推挽输出 */
- GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; /* 50MHz*/
- GPIO_Init(GPIOA,&GPIO_InitStruct); /*初始化GPIOA */
- }
-
-
- int main(void)
- {
- RCC_Init();
- MCO_GPIO_Config();
- RCC_MCOConfig(RCC_MCO_SYSCLK); /* MCO输出SYSCLK */
-
- }
-
-
|