日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

文章目錄


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

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

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


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

stm32內部的低速時鐘(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速度)


###系統與外設時鐘

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


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


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

從STM32F4的內部時鐘樹可知,當APB1和APB2分頻數為1的時候,TIM1、TIM8TIM11的時鐘為APB2的時鐘,TIM2TIM7、TIM12TIM14的時鐘為APB1的時鐘;而如果APB1和APB2分頻數不為1,那么TIM1、TIM8TIM11的時鐘為APB2的時鐘的兩倍,TIM2TIM7、TIM12TIM14的時鐘為APB1的時鐘的兩倍。

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

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。