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...