寫在前面
微控制器型號:stm32l151v8t6
硬體:8mhz有源晶振
目的:開啟外部高速晶振,配置系統時鐘(預設使用hsi 16mhz)
其實時鐘的配置一點也不難,只要看懂時鐘樹就好。
工程的裡面startup_stm32l1xx_md.s為啟動檔案,
; reset handler routine
reset_handler proc
export reset_handler [weak]
import __main
import systeminit
ldr r0,
=systeminit // 在stm32的其實**中systeminit為系統呼叫的時鐘函式
blx r0
ldr r0,
=__main
bx r0
endp
開啟system_stm32l1xx.c的 systeminit 函式,此函式為系統時鐘初始化函式,沒有時鐘晶元是無法工作的。
void systeminit (
void
)
開啟 system_stm32l1xx.c 檔案中的 setsysclock 函式,開啟此函式就會看到時鐘相關的配置,一般 system_stm32l1xx.c 檔案的前面會有巨集定義,只需注釋或開啟對應的巨集定義即可, setsysclock 函式就會呼叫對應的時鐘配置函式。(如果想要自己配置時鐘頻率,則要修改對應時鐘樹的倍頻和分頻引數)
從圖中可知:共有5 種時鐘源,分別為
hse:外部8m晶振)、
hsi: 內部高速晶振16mhz
lsi:內部低速晶振37khz
lse: 外部低速晶振 32.768khz
msi: 內部多速度段晶振,65.536khz、131.072khz、262.144khz、524.288khz、1.048mhz、
2.097mhz、4.194mhz (預設 2.097mhz)
檢視系統時鐘源
sysclk_source =
rcc_getsysclksource()
;printf
("預設系統時鐘源: %d\r\n"
, sysclk_source)
;
檢視各個時鐘的頻率
void
get_sys_clock_fre
(void
)
STM32l151低功耗晶元串列埠通訊 HAL庫
參考原子的stm32f1系列的串列埠通訊實驗,移植到stm32l1系列的程式 1 採用串列埠中斷方式,串列埠接收到訊息產生中斷,因此需要使能rxne暫存器。hal庫函式的呼叫方式是 hal uart enable it uarthandle1,uart it rxne uarthandle1是uar...
STM32系統時鐘
1 參考資料 stm32f1開發指南 庫函式版本 4.3小節 時鐘系統 stm32中文參考手冊v10 第六章 復位和時鐘控制 rcc 2 時鐘系統知識總結 1 stm32有5個時鐘源 hsi hse lsi lse pll hsi是高速內部時鐘,rc振盪器,頻率為8mhz,精度不高 hse是高速外部...
stm32系統時鐘
hsi 約等於8mhz rc振盪器產生的時鐘 hse 外部時鐘 css 如果檢測到外部時鐘的損壞,自動切換到hsi 系統時鐘和rtc時鐘 均有三個 systick定時器 簡單的定時器,常用來做延時和心跳時鐘 24位的倒計時定時器 ctrl暫存器 其實滴答定時器很簡單,就是設定初值,然後延遲,最後就是...