rcc :reset clock control 復位和時鐘控制器。時鐘控制和時鐘暫存器很重要,不同的晶元對於不同匯流排的時鐘配置也不一定完全一樣。。
三種不同的時鐘源可被用來驅動系統時鐘(sysclk):
● hsi振盪器時鐘- high speed internal oscillator clock
● hse振盪器時鐘- high speed external oscillator clock
● pll時鐘 - phase locked loop鎖相環倍頻,用於將低頻時鐘配置成倍數的高頻時鐘
1、hse時鐘
2、hsi時鐘
3、鎖相環時鐘pllclk
系統時鐘系統開始啟動檔案stratup_stm32f10x_hd.s 中對系統初始化import systeminit
,即定義在system_stm32f10x.c中的void systeminit (void)
,這個函式最後一行就呼叫了setsysclock();
對系統時鐘進行配置。
static void setsysclock(void)
也包含在system_stm32f10x.c檔案中,預設為72m
在static void setsysclock(void);
中定義了許多巨集,如果手動定義了sysclk_freq_hse
,系統時鐘配置為hse,也可以配置系統時鐘為pllclk,只需要手動定義sysclk_freq_24mhz
等等;如果以上都沒有定義,則系統時鐘預設為8*9=72m
按照系統時鐘不同的**,在時鐘樹分成三條線路
1、hse作系統時鐘
直接選擇 hse作為系統時鐘訊號源。
再配置ahb分頻因子為1,得到hclk,72m;設定apb1匯流排分頻因子為2,得到pclk1,36m;設定apb2匯流排分頻因子為1,得到pclk2,72m。
2、hse(hsi)選作鎖相環時鐘
外部hse(8m),經過pllxtpre(不分頻),選為鎖相環pll的輸入時鐘,配置鎖相環倍頻因子(2-16)為9倍,得到鎖相環時鐘72m,然後把鎖相環時鐘配置為系統時鐘72m。然後和1後面相同。
3、hsi作系統時鐘
直接選擇 hsi作為系統時鐘訊號源。然後和1後面相同。
設計思路
1、復位rcc暫存器到預設值
2、使能hse,等待穩定,確定hse啟動成功
3、使能flash預取值,設定flash等待週期
4、配置ahb,apb2,apb1這三條匯流排的分頻因子
5、選擇鎖相環的時鐘源,倍頻因子
6、使能鎖相環,等待其穩定
7、選擇鎖相環時鐘為系統時鐘,讀取相關狀態位,等待轉換完成
具體**如下:
void hse_setsysclk(uint32_t rcc_pllmul)
else
}
除了檢視系統時鐘對流水燈重新整理頻率對應系統時鐘的改變之外,還可以主時鐘輸出sysclk,用示波器接pa8引腳輸出口檢視其波形,幅值,頻率。
STM8S時鐘配置
1 stm8時鐘說明 stm8上電復位後預設使用內部的高速時鐘,並分頻成為2m用於系統執行。如果我們想要使用外部時鐘,需要進行時鐘切換,切換過程中還需要使用stvp進行晶元選項字的更改。2 stm8s時鐘配置 庫函式版 1 配置內部高速振盪器 hsi 的分頻器 1分頻 clk hsiprescale...
RCC 使用HSE配置系統時鐘
晶元提供時鐘就要有時鐘樹 時鐘樹在參考手冊rcc章節開頭就有 這裡的時鐘樹看到感覺眼睛打了馬賽克,小弟截圖技術有限 晶振 晶體振盪器,用於各種電路中產生振盪頻率,每個微控制器裡都會有晶振,給微控制器提供時鐘頻率,振盪得越快,時鐘頻率就越高,微控制器執行的速度就越快 時鐘是由晶振提供的,首先要找到時鐘...
SOC時鐘配置
soc的時鐘產生單元 cgu 通過外部輸入時鐘和內部相位鎖相環 pll 和分頻選擇邏輯產生用於片內的不同頻率的時鐘。片內時鐘頻率的改變通過配置 ahb匯流排全域性控制模組單元內部鎖相環暫存器實現。cgu單元內部包含三個鎖相環,分別產生系統主時鐘 ddr物理層時鐘 乙太網物理層時鐘,其配置暫存器位於 ...