stm32L151 系統時鐘配置

2021-10-09 04:31:08 字數 2205 閱讀 9055

寫在前面

微控制器型號: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暫存器 其實滴答定時器很簡單,就是設定初值,然後延遲,最後就是...