void RCC_Configuration(void)
{
u32 StartUpCounter = 0, HSEStatus = 0;
/* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/
/* Enable HSE */
RCC->CR |= ((u32)RCC_CR_HSEON);
// /* Enable HSI */
// RCC->CR |= ((u32)RCC_CR_HSION);
//
// while(!(RCC->CR>>1));//等待HSI就绪
/* Wait till HSE is ready and if Time out is reached exit */
do
{
HSEStatus = RCC->CR & RCC_CR_HSERDY;
StartUpCounter++;
} while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
if ((RCC->CR & RCC_CR_HSERDY) != RESET)
{
HSEStatus = (u32)0x01;
}
else
{
HSEStatus = (u32)0x00;
}
if (HSEStatus == (u32)0x01)
{
/* HCLK = SYSCLK 设置高速总线时钟=系统时钟*/
RCC->CFGR |= (u32)RCC_CFGR_HPRE_DIV1;
/* PCLK2 = HCLK 设置低速总线2时钟=高速总线时钟 */
RCC->CFGR |= (u32)RCC_CFGR_PPRE2_DIV1;
/* PCLK1 = HCLK 设置低速总线1的时钟=高速时钟的二分频*/
RCC->CFGR |= (u32)RCC_CFGR_PPRE1_DIV2;
RCC->CFGR &= (u32)((u32)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
RCC->CFGR |= (u32)(RCC_CFGR_PLLSRC_HSE |RCC_CFGR_PLLXTPRE_HSE_Div2| RCC_CFGR_PLLMULL8); //96MHz RCC_CFGR_PLLXTPRE_HSE_Div2
/* Enable PLL 使能锁相环*/
RCC->CR |= RCC_CR_PLLON;
/* Wait till PLL is ready 等待锁相环输出稳定*/
while((RCC->CR & RCC_CR_PLLRDY) == 0)
{
}
/* Select PLL as system clock source 将锁相环输出设置为系统时钟 */
RCC->CFGR &= (u32)((u32)~(RCC_CFGR_SW));
RCC->CFGR |= (u32)RCC_CFGR_SW_PLL;
/* Wait till PLL is used as system clock source 等待校验成功*/
while ((RCC->CFGR & (u32)RCC_CFGR_SWS) != (u32)0x08)
{
}
}
Set_USBClock();
/* DMA clock enable */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
/* Enable GPIOA, GPIOB, GPIOC, USART1, SPI1,AFIO clocks */
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |
RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO | RCC_APB2Periph_SPI1 , ENABLE);
/* Enable TIM2, TIM5 clock, PWR and BKP, USB clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM5 | RCC_APB1Periph_PWR | RCC_APB1Periph_BKP | RCC_APB1Periph_USB | RCC_APB1Periph_SPI2, ENABLE);
}
外部晶振是24M,求大神解决
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>