STM32時鐘樹解析

本人之前其實也用STM32做過一些小東西,但因為時鐘的初始化一般是直接在SystemInit時鐘系統初始化函數里直接配置為72MHz,所以對于STM32的時鐘框圖并沒有怎么理會,今天剛好有空就重新看了一下并寫一篇博客記錄一下吧,以免以后又忘了。

?

STM32 有5個時鐘源:HSI、HSE、LSI、LSE、PLL。 ??
①、HSI(High Speed Internal Clock signal)是高速內部時鐘,RC振蕩器,頻率為8MHz,精度不高,受溫度影響。 
②、HSE(High Speed External Clock signal)是高速外部時鐘,為外接晶振提供的時鐘,晶振頻率范圍為4MHz~16MHz,常用8MHz的外部晶振。
③、LSI(Low Speed Internal Clock signal)是低速內部時鐘,RC振蕩器,頻率為40kHz,可配置為RTC的時鐘來源,但RTC時鐘對時鐘精度要求較高,故較少用于RTC,常用于獨立看門狗時鐘。
④、LSE是低速外部時鐘,接頻率為32.768kHz的外部晶振,用于RTC時鐘。
⑤、PLL為鎖相環倍頻輸出,其時鐘輸入源可選擇為HSI/2、HSE或者HSE/2。 ?倍頻可選擇為2~16倍,但是其輸出頻率最大不得超過72MHz。我們常用8M的外部晶振的9倍頻,即72MHz作為系統時鐘(SYSCLK)。

如圖,
紅框1中的OSC_OUT和OSC_IN接外部8M晶振(范圍為4到16MHz)作為HSE(外部高速時鐘),通過PLLXTPRE位可控制選擇器②是輸出HSE還是HSE/2,選擇器①通過PLLSRC位控制,用來選擇是HSI/2還是選擇器②的輸出作為倍頻鎖相環(PLLMUL控制倍頻的倍數)的輸入,我們一般都是(系統默認)配置為8Mhz的HSE作為倍頻器的輸入并選擇9倍頻產生72MHz的時鐘PLLCLK作為系統時鐘(SYSCLK),系統時鐘經AHB預分頻器(默認分頻系數為1)得到HCLK,可作為部分外設的時鐘,如SDIO,FSMC等,再經APB1,APB2預分頻器可得到PCLK1、PCLK2

PCLK1:APB1低速總線時鐘,最高為36M。為APB1總線時鐘的外設提供時鐘。但又經過2倍頻作為定時器2~7的時鐘,所以定時器2~7即使是在APB1下,也為72M的時鐘。

PCLK2:APB2高速總線時鐘,最高為72M。為APB2總線時鐘的外設(包含定時器1和8)提供時鐘。

PCLK2經ADC預分頻器(/2,4,6,8)作為ADCCLK(最大為14M),我們常選擇6分頻(72/6=12M)

(上圖看看到掛載在APB1,2下的外設)

紅框2表示RTC的時鐘來源為:①HSE/128;②LSE;③LSI。我們通常選擇LSE(頻率為32.768KHz的外部晶振),而LSI精度較低,并不太適合RTC時鐘,而常作為獨立看門狗的時鐘。

?


紅框3表示STM32可以選擇一個時鐘信號輸出到MCO腳(PA8)上,可以選擇為PLL 輸出的2分頻、HSI、HSE、或者系統時鐘。


上面還漏了一點,關于CSS,CSS為時鐘安全系統,在STM32參考手冊6.2.7小節有提到,開發者可以通過CSS中斷設置HSE故障后的系統時鐘,比如HSI/2(4MHz)的16倍頻,如果開發者未開啟CSS中斷或者在中斷中沒有進行相應
配置,則硬件默認使用HSI(8MHz)作為系統時鐘。

另外關于如何配置以上所講的時鐘,可以看STM32參考手冊6.3小節RCC寄存器描述。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/384551.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/384551.shtml
英文地址,請注明出處:http://en.pswp.cn/news/384551.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

S3C2440時鐘體系

S3C2440在默認情況下,整個系統全靠一個12MHz的外部晶振提供頻率來工作運行的,也就是說CPU、內存、UART、ADC等所有需要用到時鐘頻率的硬件都工作在12MHz下,但是通過查閱芯片手冊我們知道CPU時鐘最高可為400MHZ,那么怎么設置時鐘讓…

關于MCU、CPU擴展SDRAM的一個小知識

像上圖這種硬件電路圖上的16個數據位和我們在初始化SDRAM的時候設置的16位數據位寬是指我們讀寫SDRAM的時候可以同時讀寫16個數據位,數據線越多肯定越快,但是數據線也不可能無限增加,我們在程序里是可以讀寫8位,16位,3…

S3C2440擴展SDRAM

本文主要目的是記錄一下S3C2440擴展SDRAM的一些知識,方便以后查閱。 通過查閱手冊我們知道,2440有8個可以用來擴展內存的BANK,其中第6和第7還可用來擴展SDRAM 下面我們來看一下2440擴展SDRAM需要設置哪些寄存器。 一、BWSCON寄存器 該寄存器…

匯編語言的相對跳轉和絕對跳轉以及反匯編代碼解析

上圖第一行的b1 main為相對跳轉,即跳轉到pcoffset,其中pc為當前pc值,offset可以理解為偏移地址,也就是根據當前所在地址加上偏移地址實現跳轉,為相對跳轉。 我們來看看它的反匯編代碼 上圖清除完bss區后使用b1指令跳轉到30000668…

韋東山嵌入式第一期14課第004節_und異常模示程序示例_P筆記

本節課的第一個程序韋老師是想讓大家見識一下未定義異常,而第二個程序是對第一個程序進行改進,防止在某些條件下執行不了,下面就來講一下第2個程序改進了哪些地方并且有什么用。 程序在此路徑中:源碼文檔圖片\源碼\源碼_20180321…

關于NOR FLASH地址左右移的問題

問題引入:不知道你會不會有這樣的疑問:為什么在發送解鎖命令時,我們不用右移一位,而發送扇區地址時卻要右移一位(nor_cmd函數內部已經左移一位),這里先補充說明一下說明是cpu角度和nor角度&…

在linux下利用ls命令進行模糊查找

如上圖,我們當前路徑下有三個文件,分別為helloworld.c以及helloworld和1.c,直接輸入命令ls則顯示所有文件,我們可以利用ls 加*的方向進行模糊查找。 輸入ls 目錄名 形式的命令行,則是對該目錄名下的文件全部進行顯示&a…

Makefile常見符號意思

Makefile里有許許多多的符號,對于新手而言如果沒有經常使用,就很容易忘記,所以我把常見符號的意義寫下,方便日后忘記查詢。本文章會持續更新... 1.$:代表目標;$^代表所有依賴,$^代表第一個依賴。…

Linux下串口通信詳解

https://blog.csdn.net/u010783226/article/details/73369097

fstat、stat和lstat 區別

nt fstat(int filedes, struct stat *buf); int stat(const char *path, struct stat *buf); int lstat(const char *path, struct stat *buf); 一眼就能看出來fstat的第一個參數是和另外兩個不一樣的,fstat區別于另外兩個系統調用的地方在于,fstat系…

Linux的幀緩沖設備

Linux的幀緩沖設備 幀緩沖(framebuffer)是 Linux 為顯示設備提供的一個接口,把顯存抽象后的一種設備,他允許上層應用程序在圖形模式下直接對顯示緩沖區進行讀寫操作。這種操作是抽象的,統一的。用戶不必關心物理顯存的…

Linux下沒有包含頭文件(不知是哪個)導致編譯無法通過的解決心得

最近寫程序的時候編譯出錯了,提示信息為:invalid use of undefined type fb_var_screeninfo。顯示根據英文知道是沒有定義 fb_var_screeninfo這個類型,明顯是缺少了某個頭文件,但是缺少哪個頭文件以及有什么又快又好的解決方法呢&…

gcc編譯缺少數學庫

Linux下編譯出現以下提示可以在編譯的后面加上-lm,例如,arm-none-linux-gnueabi-gcc -o example1 example1.c -lm,意思就是添加數學庫的意思,編譯就能通過了 example1.c:(.text0x3e8): undefined reference to cos example1.c:(.…

Linux編譯程序時加-I指定頭文件位置

Linux下編譯出現以下錯誤,錯誤的原因是在/usr/local/arm/arm-2009q3/bin/../arm-none-linux-gnueabi/libc/usr/include/freetype/config/下找不到ftheader.h,而我到該目錄下看,發現路徑是這樣的rootubuntu:/usr/local/arm/arm-2009q3/arm-non…

樹莓派遠程監控的實現

原文:https://blog.csdn.net/ayz123456/article/details/79252923 http://shumeipai.nxez.com/2016/09/01/raspberry-pi-motion-cameras-for-remote-monitoring.html https://blog.csdn.net/wto882dim/article/details/82195001 https://blog.csdn.net/qq_3950082…

公網訪問樹莓派

公網訪問樹莓派控制小車 上篇已經介紹了小車在局域網中的控制方法,比較簡單,既然是遠程遙控那就要能夠進行公網訪問,使得你的小車可以在任何有網絡的地方都能訪問到,并且后續還會加上攝像頭,進行實時監控,想…

關于對象的引用作為參數,可以直接訪問私有成員的問題

#include using namespace std; class CPoint { public:CPoint(int xx, int yy){x xx;y yy;}CPoint(const CPoint &p){x p.x;y p.y;} private:int x, y; };首先,我們來看一個例子,在CPoint這個類中定義了兩個構造函數,第一個為普通的…

僵死進程的產生以及解決辦法

本文參考自:https://baike.baidu.com/item/%E5%83%B5%E5%B0%B8%E8%BF%9B%E7%A8%8B/1036577?fraladdin 一個進程在調用exit命令結束自己的生命的時候,其實它并沒有真正的被銷毀,而是留下一個稱為僵尸進程(Zombie)的數據…

樹莓派第一次開機自動連接WIFI(不用顯示屏方法)

當我們把樹莓派系統鏡像燒錄到SD卡之后,我們在windows看到的TF卡變成了空間很小的名為boot的盤,我們在此目錄下新建一個名為wpa_supplicant.conf空白文件,并在其中加入以下代碼: countryGB ctrl_interfaceDIR/var/run/wpa_supplicant GROUPn…