STM32F103 時鐘配置

2021-08-19 07:26:44 字數 3497 閱讀 7785

stm32f103外部8m的振盪器,經過倍頻後最高可以達到72m。

void rcc_deinit(void)將外設rcc暫存器重設為預設值

void rcc_hseconfig(u32 rcc_hse)設定外部高速晶振(hse)

rcc_hse    取值如下:

rcc_hse_offhse晶振off

rcc_hse_onhse晶振on

rcc_hse_bypasshse晶振被外部時鐘旁路

errorstatus rcc_waitforhsestartup(void)等待hse起振

該函式將等待直到hse就緒,或者在超時的情況下退出

返回值乙個errorstatus列舉值:

success:hse晶振穩定且就緒

error:hse晶振未就緒

void rcc_hclkconfig(u32 rcc_hclk)設定ahb時鐘(hclk)

ahb(hclk)時鐘源自系統時鐘(sysclk)

rcc_hclk 取值如下:

rcc_sysclk_div1ahb時鐘 = 系統時鐘

rcc_sysclk_div2ahb時鐘 = 系統時鐘 / 2

rcc_sysclk_div4ahb時鐘 = 系統時鐘 / 4

rcc_sysclk_div8ahb時鐘 = 系統時鐘 / 8

rcc_sysclk_div16ahb時鐘 = 系統時鐘 / 16

rcc_sysclk_div64ahb時鐘 = 系統時鐘 / 64

rcc_sysclk_div128ahb時鐘 = 系統時鐘 / 128

rcc_sysclk_div256ahb時鐘 = 系統時鐘 / 256

rcc_sysclk_div512ahb時鐘 = 系統時鐘 / 512

void rcc_pclk2config(u32 rcc_pclk2)設定高速ahb時鐘(pclk2)

pclk2時鐘源自ahb時鐘(hclk)

rcc_pclk2輸入引數:

rcc_hclk_div1apb2時鐘 = hclk

rcc_hclk_div2apb2時鐘 = hclk / 2

rcc_hclk_div4apb2時鐘 = hclk / 4

rcc_hclk_div8apb2時鐘 = hclk / 8

rcc_hclk_div16apb2時鐘 = hclk / 16

void rcc_pclk1config(u32 rcc_pclk1)設定低速ahb時鐘(pclk1)

rcc_pclk1輸入引數

rcc_hclk_div1apb1時鐘 = hclk

rcc_hclk_div2apb1時鐘 = hclk / 2

rcc_hclk_div4apb1時鐘 = hclk / 4

rcc_hclk_div8apb1時鐘 = hclk / 8

rcc_hclk_div16apb1時鐘 = hclk / 16

void rcc_pllconfig(u32 rcc_pllsource, u32 rcc_pllmul)設定pll時鐘源及倍頻係數

rcc_pllsource輸入引數

rcc_pllsource_hsi_div2pll的輸入時鐘 = hsi時鐘頻率除以2

rcc_pllsource_hse_div1pll的輸入時鐘 = hse時鐘頻率

rcc_pllsource_hse_div2pll的輸入時鐘 = hse 時鐘頻率除以2

rcc_pllmul輸入引數

rcc_pllmul_2pll輸入時鐘 x 2

rcc_pllmul_3pll輸入時鐘 x 3

rcc_pllmul_4pll輸入時鐘 x 4

rcc_pllmul_5pll輸入時鐘 x 5

rcc_pllmul_6pll輸入時鐘 x 6

rcc_pllmul_7pll輸入時鐘 x 7

rcc_pllmul_8pll輸入時鐘 x 8

rcc_pllmul_9pll輸入時鐘 x 9

rcc_pllmul_10pll輸入時鐘 x 10

rcc_pllmul_11pll輸入時鐘 x 11

rcc_pllmul_12pll輸入時鐘 x 12

rcc_pllmul_13pll輸入時鐘 x 13

rcc_pllmul_14pll輸入時鐘 x 14

rcc_pllmul_15pll輸入時鐘 x 15

rcc_pllmul_16pll輸入時鐘 x 16

void rcc_pllcmd(functionalstate newstate)使能或者失能pll

newstate輸入引數

enable 或者 disable

flagstatus rcc_getflagstatus(u8 rcc_flag)檢查指定的rcc標誌位設定與否

rcc_flag輸入引數

rcc_flag_hsirdyhsi晶振就緒

rcc_flag_hserdyhse晶振就緒

rcc_flag_pllrdypll就緒

rcc_flag_lserdylsi晶振就緒

rcc_flag_lsirdylse晶振就緒

rcc_flag_pinrst管腳復位

rcc_flag_porrstpor/pdr復位

rcc_flag_sftrst軟體復位

rcc_flag_iwdgrstiwdg復位

rcc_flag_wwdgrstwwdg復位

rcc_flag_lpwrrst低功耗復位

返回值set reset

void rcc_sysclkconfig(u32 rcc_sysclksource)設定系統時鐘(sysclk)

rcc_sysclksource輸入引數    

rcc_sysclksource_hsi選擇hsi作為系統時鐘

rcc_sysclksource_hse選擇hse作為系統時鐘

rcc_sysclksource_pllclk選擇pll作為系統時鐘

u8 rcc_getsysclksource(void)返回用作系統時鐘的時鐘源

返回值0x00:hsi作為系統時鐘

0x04:hse作為系統時鐘

0x08:pll作為系統時鐘

例程hse作為pll,pll作為sysclk

rcc_deinit();

rcc_hseconfig(rcc_hse_on);

if (rcc_waitforhsestartup() == success)

}

STM32F103 時鐘配置

由於stm32的庫預設是外部晶振8m的情況下實現的,所以配置波特率的時候也是按8m,包括主頻,如果用12m晶振就需要改動幾個地方 在system stm32f10x.c中找到相應型別的檔案,進行如下修改。1 72m主頻 8m時 rcc cfgr uint32 t rcc cfgr pllsrc hs...

STM32F103時鐘樹講解

時序在數位電路中的作用,就像通訊中用到的載波,載波並不起眼,但是很重要。時鐘也一樣,現象上只是某種頻率波峰波谷跳動,一成不變。但是有了它,就像人類的歷史有了時間軸一樣,什麼時候該幹什麼事才有了可能。程式中發生的事件,能夠按照自己的意願發生。時鐘源倍頻器高速時鐘高速外設低速時鐘低速外設yesno st...

STM32F103低功耗喚醒時鐘設定

stm32中有四個時鐘源 stm32f103中預設的時鐘源為8m高速外部時鐘,通過分頻器llxtpre選擇不分頻為8mhz,再通過鎖相環pll經過9倍頻得到時鐘頻率72mhz,並將該頻率作為系統時鐘。stm32中很方便的將以上步驟簡化為乙個初始化函式 systeminit 因此,對於stm32中時鐘...