STM32之RCC配置
采用8MHz?外部HSE?時鐘,程序的時鐘設置參數流程如下:
??????? 1.將?RCC?寄存器重新設置為默認值:RCC_DeInit();
??????? 2.打開外部高速時鐘晶振?HSE :RCC_HSEConfig(RCC_HSE_ON);
??????? 3.等待外部高速時鐘晶振工作:?HSEStartUpStatus = RCC_WaitForHSEStartUp();
??????? 4.設置?AHB?時鐘?(HCLK)?:RCC_HCLKConfig(RCC_SYSCLK_Div1);
??????????????? 5.設置APB 2時鐘?(APB2) :RCC_PCLK2Config(RCC_HCLK_Div1);
??????????????? 6.設置APB1?時鐘?(APB1)?:RCC_PCLK1Config(RCC_HCLK_Div2);
??????????????? 7.設置?PLL?:RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
??????? 8.打開?PLL?:RCC_PLLCmd(ENABLE);
??????? 9.等待?PLL?工作:while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
?10.設置系統時鐘:RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
?11.判斷?PLL?是否是系統時鐘:while(RCC_GetSYSCLKSource() != 0x08);
void RCC_config()
{
???????ErrorStatus HSEStartUpStatus;?//?定義錯誤狀態變量
???????RCC_DeInit();//將RCC寄存器重新設置為默認值
???????RCC_HSEConfig(RCC_HSE_ON);?//打開外部高速時鐘晶振
???????HSEStartUpStatus = RCC_WaitForHSEStartUp();//?等待外部高速時鐘晶振工作
???????if(HSEStartUpStatus == SUCCESS)
???????{
????????? ?RCC_HCLKConfig(RCC_SYSCLK_Div1);//設置AHB不分頻,HCLK=SYSCLK
???????????RCC_PCLK2Config(RCC_HCLK_Div1);//設置APB2不分頻,P2CLK=HCLK
???????????RCC_PCLK1Config(RCC_HCLK_Div2);?//設置APB1?為2分頻,P1CLK=HCLK/2
???????????FLASH_SetLatency(FLASH_Latency_2);//設置FLASH代碼延時
????????? ?FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//使能預取指緩存
???????????RCC_PLLConfig(RCC_PLLSource_HSE_Div1,?RCC_PLLMul_9);//設置PLL時鐘源,為HSE的9倍頻8MHz * 9 = 72MHz
???????????RCC_PLLCmd(ENABLE);//使能PLL
???????????while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);//等待PLL準備就緒
???????????RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//設置PLL為系統時鐘源
???????????while(RCC_GetSYSCLKSource() != 0x08);//判斷PLL是否是系統時鐘
???????}
}
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!
總結
以上是生活随笔為你收集整理的STM32之RCC配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: S5PV210裸机之时钟
- 下一篇: 【知识】人工智能数学基础知识