用HSE(外部高速時鐘8M)來控制系統時鐘

這個控制系統時鐘(SYSCLK)利用的是的HSE(外部高速時鐘8M)來做爲時鐘源fetch

首先HSE通過PLLXTPRE(選擇分頻)時選擇不分頻ui

到了PLLSRC(選擇鎖相環時鐘源)時選擇HSEcode

在通過PLLMUL(選擇倍頻數)選擇9倍頻 8*9=72Mblog

注意:這裏能夠選擇16倍頻,達到816=144可是不夠穩定*flash

代碼實現it

bsp_rccclkconfig.c變量

void HSE_SetSysClk(uint32_t RCC_PLLMul_x)//這裏的入口參數是選擇倍頻的數目(2-16) { ErrorStatus HSEStatus;//建立時鐘狀態變量sed

//使能外部高速時鐘
RCC_HSEConfig(RCC_HSE_ON);

 HSEStatus = RCC_WaitForHSEStartUp();//等待外部時鐘的開啓

if( HSEStatus = SUCCESS)
{
	//使能預取址 **注意**這是flash裏面的操做
	FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
	FLASH_SetLatency(FLASH_Latency_2);
		
	//配置分頻因子
	RCC_HCLKConfig(RCC_SYSCLK_Div1);//AHB和系統時鐘(72M)相等
	RCC_PCLK1Config(RCC_HCLK_Div2);//APB1爲系統時鐘(72M)的一半36M	注意當APB1爲ADC模式時系統時鐘比36M大
	RCC_PCLK2Config(RCC_HCLK_Div1);//APB2和系統時鐘(72M)相等
	
	//設置鎖相環的參數設置 外部高速時鐘 選擇9倍頻	8*9=72M
	RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_x);
	
	//使能PLL
	RCC_PLLCmd(ENABLE);
	//等待PLL時鐘穩定
	while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
		
	//選擇系統時鐘
	RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
	//查看是否系統時鐘源是否爲PLL鎖相環時鐘
	//- 0x00: HSI used as system clock
	//- 0x04: HSE used as system clock
	//- 0x08: PLL used as system clock
	while( RCC_GetSYSCLKSource() != 0x08 );
}
else
{
	//外部時鐘開啓失敗操做
}

}配置

相關文章
相關標籤/搜索