日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

【STM32】STM32f4学习之路--时钟

發(fā)布時間:2025/4/16 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【STM32】STM32f4学习之路--时钟 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄


初學(xué)STM32,發(fā)現(xiàn)他的時鐘系統(tǒng)有點復(fù)雜(相對于之前學(xué)的51單片機來說)。這是為什么?
–51單片機的I/O口少,外設(shè)簡單,所以時鐘一般來說都是固定的,這也導(dǎo)致了51單片機應(yīng)用場景的局限性。
–stm32單片機之所以時鐘系統(tǒng)的復(fù)雜,這與它芯片本身應(yīng)用的場景有關(guān),我們知道,32一般都是多引腳且外設(shè)多,應(yīng)用場合也十分廣泛,例如一些低功耗、高頻率的場合,這些無疑都是得益于他的時鐘系統(tǒng)。

##1-STM32的時鐘來源
stm32總共擁有5個時鐘源:
①HSE,high-speed-extern(高速外部時鐘)
②HSI,high-speed-inside(高速內(nèi)部時鐘)
③LSE,low-speed-extern(低速外部時鐘)
④LSI,low-speed-inside(低速內(nèi)部時鐘)
⑤PLL,鎖相環(huán)倍頻輸出時鐘

HSE:外部晶振/陶瓷諧振器、精度高。ST官方推薦的外部晶振是8M,如果外接其他類型的晶振,須在stm32f4xx.h程序中修改宏,以及在system_stm32f4xx.c修改PLL
HSI:內(nèi)部16MRC振蕩器,啟動速度比HSE快,但精度不及HSE。
LSE:外部晶振/陶瓷諧振器,一般用于實時時鐘(RTC)的時鐘源,功耗低且精度高。
LSI:內(nèi)部32KHz振蕩器,可作為停機/待機、獨立看門狗、自動喚醒單元的時鐘源。
PLL:分為主PLL和專用PLL。主PLL由HSE或HSI提供時鐘信號,并輸出兩時鐘(1個用于系統(tǒng)時鐘168M,1個用于USB OTG FS時鐘48M、隨機數(shù)發(fā)生器<=48M、SDIO時鐘<=48M);專用PLL與主PLL有相同的輸入時鐘,但其有專門的使能禁止和分頻系數(shù),為I2S提供時鐘。
下面是stm32的時鐘樹,圖片太大,我們分開來看。


##2-各個功能的時鐘來源
###看門狗與RTC時鐘

stm32內(nèi)部的低速時鐘(32KHz)可作為獨立看門狗與RTC的時鐘源,同時可以看到,RTC的時鐘源有3個,另外的兩個分別是LSE(32.768KHz)、(分頻2-31)后的HSE。


###微控制器時鐘輸出MCO

MCO1有4個時鐘來源:HSE、HSI、PLL、LSE
MCO2有4個時鐘來源:HSE、PLL、PLL2S、SYSCLK
MCO輸出時鐘不得超過100MHz(最大I/O速度)


###系統(tǒng)與外設(shè)時鐘

重點來了,敲黑板!
系統(tǒng)時鐘SYSCLK經(jīng)過分頻(1-512)后供給外設(shè)使用,其時鐘來源包括:HSE、HSI、主PLL
通常我們所說的168MHz其實的來源是:HSE外接8M晶振,經(jīng)過8分頻(/M,M系數(shù)為8),然后經(jīng)過336倍頻(N,N為336),在經(jīng)過2分頻(/P,P為2)后,即*(8/8)336/2=168M*
系統(tǒng)主時鐘SYSCLK可直接為以太網(wǎng)PTP提供時鐘, 也可經(jīng)過分頻(1-512)供給HCLK、AHB總線、內(nèi)核、存儲器、DMA,或者8分頻后供給Cortex 系統(tǒng)定時器Systick;SYSCLK在經(jīng)過AHB(一般不分頻,保持168M)分頻后再分頻為APB1(4分頻,因為APB1頻率不得超過42M)和APB2(一般2分頻,最大不得超過84M)提供時鐘。APB1和APB2 各自掛載不同的外設(shè),詳細請看datasheet。


ST官方推薦的stm32外部晶振是8M,這樣子的話,通常我們只需調(diào)用庫函數(shù)system_stm32f4xx.c中的**void SystemInit(void)**函數(shù)即可進行時鐘的配置,默認(rèn)是168M系統(tǒng)時鐘,APB1為42M,APB2為84M,如需要可自行修改。


##3-后記
PS:這里剛開始有個疑問為什么TIM14(掛載在APB1)能達到84MHz,,看了時鐘樹之后才發(fā)現(xiàn),定時器時鐘做了另外的處理的,記錄下;

從STM32F4的內(nèi)部時鐘樹可知,當(dāng)APB1和APB2分頻數(shù)為1的時候,TIM1、TIM8TIM11的時鐘為APB2的時鐘,TIM2TIM7、TIM12TIM14的時鐘為APB1的時鐘;而如果APB1和APB2分頻數(shù)不為1,那么TIM1、TIM8TIM11的時鐘為APB2的時鐘的兩倍,TIM2TIM7、TIM12TIM14的時鐘為APB1的時鐘的兩倍。

因為系統(tǒng)初始化SystemInit函數(shù)里初始化APB1總線時鐘為4分頻即42M,APB2總線時鐘為2分頻即84M,所以TIM1、TIM8TIM11的時鐘為APB2時鐘的兩倍即168M,TIM2TIM7、TIM12~TIM14的時鐘為APB1的時鐘的兩倍即84M

另外,TIM_ClockDivision是在采樣時使用的時鐘分頻器,比如輸入捕獲時的采樣時鐘或計算互補輸出的死區(qū)的時鐘;時鐘分頻就一個PSC,還有一個重裝載計數(shù)值A(chǔ)RR,一般只有設(shè)置這兩個就夠了,TIM_ClockDivision在輸入捕獲和PWM的互補輸出時設(shè)置才有意義!

總結(jié)

以上是生活随笔為你收集整理的【STM32】STM32f4学习之路--时钟的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。