乙個STM32 HSE應用配置的相關話題

2021-09-16 22:25:29 字數 1583 閱讀 1699

** 

不論stm8還是stm32系列的mcu,晶元復位後預設時鐘源都是內部hsi,要使用外部時鐘源hse的話,得通過軟體對相關控制暫存器進行使能配置才行。

如果使用外部hse的話,一般有兩種模式:

1、外部晶體/陶瓷諧振器(hse晶體)模式

這種模式用得比較常見,hse晶體可以為系統提供較為精確的時鐘源。在時鐘控制暫存器rcc_cr中的hserdy位用來指示高速外部振盪器是否穩定。在啟動時,直到這一位被硬體置』1』,時鐘才被釋放出來。hse晶體可以通過設定時鐘控制暫存器裡rcc_cr中的hseon位被啟動和關閉。

整體上講,陶瓷晶體和石英晶體的主要區別就在於精度和溫度穩定性上。石英晶體比陶瓷晶體精度要高,溫度穩定性要好。

2、外部時鐘源(hse旁路)模式

該模式下必須提供外部時鐘。使用者通過設定時鐘控制暫存器中的hsebyp和hseon位來選擇這一模式。外部時鐘訊號(50%占空比的方波、正弦波或三角波)必須連到soc_in引腳,此時osc_out引腳對外呈高阻態。

所謂hse旁路模式,是指無需上面提到的使用外部晶體時所需的晶元內部時鐘驅動元件,直接從外界匯入時鐘訊號。猶如晶元內部的驅動元件被旁路了。

不過,在使用該模式時,經常有人出現配置錯誤,即使用跟hse晶體模式一樣的配置。這點在stm8/stm32應用中都有人發生。 所幸的是使用這個旁路模式的情形不像使用外部晶體模式那麼多,不然可能更多人在這裡遇到麻煩。

我們不妨以stm3f4系列晶元為例。

關於暫存器位上面已經提到了,旁路模式除了配置hseon還得配置hsebyp位。

對於標準庫函式voidrcc_hseconfig(uint32_t rcc_hse)

或cube庫函式__hal_rcc_hse_config(rcc_oscinitstruct->hsestate)裡的相關引數可能是:rcc_hse_on、 rcc_hse_bypass或rcc_hse_off的其中之一。

如果使用stm32cubemx圖形配置介面的話可以看到3個選項:

在st mcu應用開發中,常有人會用到有源晶振作為時鐘源。如果用它該選擇哪種工作模式呢?

有源晶振一般是四腳封裝,電源、地線、振盪輸出和乙個控制端【或者懸空端】。相比無源晶體,有源晶振本身就是個完整的振盪器件,只需要供給適當的電源就能輸出時鐘,無須額外的振盪驅動匹配電路。其時鐘輸出不依賴於外部器件振盪電路,相對更不容易受外部線路不穩定性的影響。自然其**往往要高於無源晶體,不過其輸出電平幅度往往不能像無源晶體那樣隨著應用電路的變化而變化。

不難看出,如果使用有源晶振作為外部時鐘源的話,我們應該配置為hse旁路模式,而不是hse晶體模式。將有源晶振的輸出腳接到mcu的osc_in腳。

STM32 HSE初始化失敗的解決以及HSI初始化

偶然遇到乙個問題,假設hse初始化失敗怎麼辦,庫函式內沒有提供處理只是寫了 if hsestatus uint32 t 0x01 讓我們自己處理。平常我們都是用sysclk 72m。這是在hse的情況下才能達到的。如果hse初始化不成功只能使用hsi。注意上圖時鐘樹hsi想使用pll要2分頻。這樣才...

STM32點亮乙個LED

圖 i o埠位的基本結構 stm32f103c8t6共有2組gpio埠 pa pb,每組16個埠。每個埠有兩個32位配置暫存器 gpiox crl,gpiox crh 兩個32位資料暫存器 gpiox idr,gpiox odr 乙個32位置位 復位暫存器 gpiox bsrr 乙個16位復位暫存器...

STM32串列埠遇到的乙個問題

做hlw8032電能表專案中關於usart使用dma接收定長資料的問題 1 由於hlw8032晶元一上電,晶元就會通過串列埠每隔50ms向stm32傳送24位元組的資料,且我不能通過stm32控制hlw8032傳送資料,由於stm32初始化需要一段時間,所以當stm32接收資料時會出現丟包的情況。2...