CKS32F107xx系列時鐘系統(tǒng)(二)
上一章節(jié)對CKS32F107xx系列時鐘做了整體介紹,本章節(jié)以使用HSI內部高速時鐘為例對時鐘具體配置方法進行講解。
圖1 SYSCLK生成流程
圖2 APB頻率生成流程
根據(jù)圖1,產生SYSCLK時,內部HSI時鐘經(jīng)過二分頻,輸入PLLSCR模塊,再通過PLLM倍頻系數(shù)產生PLLCLK,即SYSCLK。
由圖2可知,SYSCLK通過AHB預分頻產生APB即HCLK等時鐘系統(tǒng)。
配置寄存器
CKS32F107xx系列時鐘配置寄存器
在使用HSI對系統(tǒng)時鐘進行配置時,有兩個較為重要的RCC寄存器,分別為RCC_CR、RCC_CFGR:
圖3 RCC_CR寄存器
在RCC_CR寄存器中,我們需要關注如下幾位:
圖4 HSI啟動及狀態(tài)寄存器
圖5 PLL啟動及狀態(tài)寄存器
圖6 RCC_CFGR寄存器
在RCC_CFGR寄存器中,我們需要關注如下幾位:
圖7PLL倍頻系數(shù)位
圖8PLL時鐘源位
圖9 APB2預分頻位
圖10 其他RCC_CFGR控制位
在對系統(tǒng)時鐘進行初始化過程中,一般也會對閃存訪問時間進行配置,如下為CKS32F107xx系列閃存訪問時間與系統(tǒng)時鐘的對應關系:
圖11 閃存訪問時間
CKS32F107xx系列時鐘配置代碼
依據(jù)上一章節(jié)中對寄存器的基本介紹,即可在函數(shù)SetSysClock()中對程序時鐘進行相關配置,本文以HSI為時鐘源,進行36MHz SYSCLK/HCLK/APB1/APB2配置。
/* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/
/* Enable HSI */
RCC->CR |= ((uint32_t)RCC_CR_HSION);
/* Wait till HSI is ready and if Time out is reached exit */
while((RCC->CR & RCC_CR_HSIRDY) == 0){}
/* Enable Prefetch Buffer */
FLASH->ACR |= FLASH_ACR_PRFTBE;
/* Flash 1 wait state */
FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1;
/*AHB Prescaler set*/
RCC->CFGR |= (uint32_t)RCC_SYSCLK_Div1;
/* HCLK = SYSCLK */
RCC->CFGR |=(uint32_t)RCC_CFGR_HPRE_DIV1;
/* PCLK2 = HCLK */
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
/* PCLK1 = HCLK */
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1;
/* PLL configuration: PLLCLK = HSI / 2 * 9 = 36 MHz */
RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL);
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLMULL9);
/* 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 &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;
/* Wait till PLL is used as system clock source */
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08){}
審核編輯:劉清
-
寄存器
+關注
關注
31文章
5358瀏覽量
120774 -
pll
+關注
關注
6文章
780瀏覽量
135222 -
RCC
+關注
關注
0文章
93瀏覽量
26974 -
時鐘系統(tǒng)
+關注
關注
1文章
101瀏覽量
11754
原文標題:MCU微課堂|CKS32F107xx系列時鐘系統(tǒng)(二)
文章出處:【微信號:中科芯MCU,微信公眾號:中科芯MCU】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
MCU微課堂|CKS32F4xx系列產品時鐘配置
基于CKS32F4xx系列的MCU互補PWM方案
![基于<b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>的MCU互補PWM方案](https://file1.elecfans.com/web2/M00/B2/4C/wKgaomVqkziAQHJYAAAPr857xR4112.png)
CKS32F4xx系列產品NVIC中斷優(yōu)先級管理單元講解
CKS32F4xx系列產品串口DMA傳輸
CKS32F4xx系列RNG功能設置
![<b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>RNG功能設置](https://file1.elecfans.com/web2/M00/A3/86/wKgaomT6gH2AHojwAAAPwIIu7n0544.jpg)
CKS32F4xx系列FSMC功能簡介
![<b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>FSMC功能簡介](https://file1.elecfans.com/web2/M00/C9/52/wKgaomYbgNeAYwUKAABKakV6wDo253.png)
CKS32F107xx系列MCU中ADC介紹
CKS32F107xx系列MCU的GPIO內部硬件結構和工作模式
![<b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>MCU的GPIO內部硬件結構和工作模式](https://file1.elecfans.com/web2/M00/FE/85/wKgaomadtLiAf3NtAAHFLEhMVU8538.jpg)
詳解CKS32F107xx系列的定時器同步功能
![詳解<b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>的定時器同步功能](https://file1.elecfans.com/web3/M00/00/04/wKgZO2dFmo2AEGVaAAAmt1_ZZbs531.png)
評論