STM32菜鳥之初始化函數以及延時函數

1、STM32時鐘配置初始化函數:

void Stm32_Clock_Init(){
unsigned char temp = 0;   	 //定義一個無符號型的char類型的變量,變量名爲temp
MYRCC_DeInit();		//復位並配置向量表,此函數是keil自動寫好的,可以不用去管他
RCC->CR |= 0x00010000;	//把stm32的時鐘控制寄存器的第16位置1來使能外部時鐘(HSE),具體說明見STM32參考手冊第85頁對RCC_CR寄存器的說明
while(! (RCC->CR>>17));	//判斷RCC_CR寄存器的第17位,即判斷外部高速時鐘是否就緒
RCC->CFGR = 0x00000400;	//通過設置時鐘配置寄存器的第10-8爲來是APB1的時鐘不超過36MHz,以防止當APB1時鐘超過36MHz而帶來的系統紊亂
PLL-=2;				//將PLL值減2來配置系統的鎖相環倍頻係數,具體要求見RCC_CFGR寄存器的21-18位。
RCC_CFGR |=(PLL<<18);		//將減去2後的PLL值左移18位後與原RCC_CFGR值進行或運算,即將配置PLL值
RCC_CFGR|=(1<<16);		//將外部時鐘作爲系統時鐘
FLASH_ACR |= 0x32;		//將FLASH延時兩個週期 具體參考ST文檔PM0042  programming manual《STM32F10XXX Flash Programming》

RCC_CR |=0x01000000;	//使能PLL
while(!(RCC->CR>>25));	//判斷使能PLL是否成功
RCC_CFGR |= 0x0000002;//將PLL輸出作爲系統時鐘
while(temp!=0x02)	{	//等待PLL輸出作爲系統時鐘設置成功
	temp=RCC-CFGR>>2;
	temp&=0x03;
	}


}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章