STM32L151 RCC问题

2019-07-21 01:29发布


STM32L151系列  外接8MHZ晶振,调用RCC_Configuration(),就不能正常运行。各位老兄帮忙看看什么问题啊!



void RCC_Configuration(void){ //RCC时钟的设置  
        ErrorStatus HSEStartUpStatus;   
        RCC_DeInit();              /* RCC system reset(for debug purpose) RCC寄存器恢复初始化值*/   
        RCC_HSEConfig(RCC_HSE_ON); /* Enable HSE 使能外部高速晶振*/   
        HSEStartUpStatus = RCC_WaitForHSEStartUp(); /* Wait till HSE is ready 等待外部高速晶振使能完成(确认晶振开启)*/   
        if(HSEStartUpStatus == SUCCESS){   
                /*设置PLL时钟源及倍频系数*/   
                RCC_PLLConfig(RCC_PLLSource_HSE , RCC_PLLMul_12 ,RCC_PLLDiv_3 ); //RCC_PLLMul_x(枚举2~16)是倍频值。当HSE=8MHZ,RCC_PLLMul_4时PLLCLK=32MHZ   
                /*设置AHB时钟(HCLK)*/   
                RCC_HCLKConfig(RCC_SYSCLK_Div1); //RCC_SYSCLK_Div1——AHB时钟 = 系统时钟(SYSCLK) = 32MHZ(外部晶振8HMZ)   
                /*注意此处的设置,如果使用SYSTICK做延时程序,此时SYSTICK(Cortex System timer)=HCLK/8=9MHZ*/   
                RCC_PCLK1Config(RCC_HCLK_Div1); //设置低速AHB时钟(PCLK1),RCC_HCLK_Div1——APB1时钟 = HCLK = 32MHZ(外部晶振8HMZ)   
                RCC_PCLK2Config(RCC_HCLK_Div1); //设置高速AHB时钟(PCLK2),RCC_HCLK_Div1——APB2时钟 = HCLK = 32MHZ(外部晶振8HMZ)   
                /*注:AHB主要负责外部存储器时钟。APB2负责AD,I/O,高级TIM,串口1。APB1负责DA,USB,SPI,I2C,CAN,串口2,3,4,5,普通TIM */  
                FLASH_SetLatency(FLASH_Latency_1); //设置FLASH存储器延时时钟周期数   
                /*FLASH时序延迟几个周期,等待总线同步操作。   
                推荐按照单片机系统运行频率:
                0—24MHz时,取Latency_0;   
                24—48MHz时,取Latency_1;   
                48~72MHz时,取Latency_2*/   
                FLASH_PrefetchBufferCmd(ENABLE); //选择FLASH预取指缓存的模式,预取指缓存使能   
                RCC_PLLCmd(ENABLE);        //使能PLL
                while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //等待PLL输出稳定   
                RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //选择SYSCLK时钟源为PLL
                while(RCC_GetSYSCLKSource() != 0x08); //等待PLL成为SYSCLK时钟源   
        }  
        /*开始使能程序中需要使用的外设时钟*/   
//        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |   
//        RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE); //APB2外设时钟使能      
//        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); //APB1外设时钟使能  
//        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);   
//        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);            
//        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);   

}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。