SystemInit時鐘系統初始化函式

2021-10-05 12:09:36 字數 1932 閱讀 6696

void

systeminit

(void

)static

void

setsysclock

(void

)//下面主要講解該函式

static

void

setsysclockto72

(void

)while

((hsestatus ==0)

&&(startupcounter !=

hse_startup_timeout))

;if((

rcc-

>cr&

rcc_cr_hserdy)!=

reset

)else

//如果hse成功就緒了

if(hsestatus ==

(uint32_t)

0x01

)/* pll configuration: pllclk = prediv1 * 9 = 72 mhz */

rcc-

>

cfgr

&=(uint32_t)~(

rcc_cfgr_pllxtpre

|rcc_cfgr_pllsrc

|rcc_cfgr_pllmull);

rcc-

>

cfgr

|=(uint32_t)

(rcc_cfgr_pllxtpre_prediv1

|rcc_cfgr_pllsrc_prediv1

|rcc_cfgr_pllmull9);

#else

/* pll configuration: pllclk = hse * 9 = 72 mhz */

rcc-

>

cfgr

&=(uint32_t)

((uint32_t)~(

rcc_cfgr_pllsrc

|rcc_cfgr_pllxtpre

|rcc_cfgr_pllmull))

;rcc

->

cfgr

|=(uint32_t)

(rcc_cfgr_pllsrc_hse

|rcc_cfgr_pllmull9);

#endif /* stm32f10x_cl */

/* enable pll */

//使能pll

rcc-

>

cr|=

rcc_cr_pllon

;/* wait till pll is ready */

//等待pll就緒

while((

rcc-

>cr&

rcc_cr_pllrdy)==

0)/* select pll as system clock source */

//將pll作為系統時鐘的**

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)}

else

}

注意:初始化系統時鐘之後可以通過變數systemcoreclock獲取系統時鐘。如果sysclk=72mhz,那麼變數systemcoreclock=72000000。

實時(RTC)時鐘,系統時鐘和CPU時鐘

最近在學stm32的時候看到rtc時鐘和系統時鐘,不知道區別在 於是上網查了一下。實時時鐘 rtc時鐘,用於提供年 月 日 時 分 秒和星期等的實時時間資訊,由後備電池供電,當你晚上關閉系統和早上開啟系統時,rtc仍然會保持正確的時間和日期。系統時鐘 是乙個儲存於系統記憶體中的邏輯時鐘。用於系統的計...

Linux系統時鐘與硬體時鐘

linux系統有兩個時鐘 乙個是由主機板電池驅動的硬體時鐘 real time clock 也叫做rtc或者叫cmos時鐘。當作業系統關機的時候,用這個來記錄時間,但是對於執行的系統是不用這個時間的 另乙個時間是系統時鐘 system clock 也叫核心時鐘或者軟體時鐘,是由軟體根據時間中斷來進行...

北斗時鐘同步系統(北斗時鐘系統 北斗授時系統)

北斗時鐘同步系統 北斗時鐘系統 北斗授時系統 北斗時鐘同步系統 北斗時鐘系統 北斗授時系統 技術交流 岳峰 15901092122 yf cs 163.com q 522508213 時鐘同步系統是針對計算機 自動化裝置等進行校時而研發的高科技產品,時鐘同步系統通過接收北斗衛星 gps cdma p...