ARM芯片的時(shí)鐘樹配置概略
下面專欄基于本人的開發(fā)經(jīng)驗(yàn),如果有錯(cuò)誤歡迎指出.簡(jiǎn)單介紹下部分ARM芯片的時(shí)鐘
入門級(jí)別:ARM7TDMI核心的R710F
因?yàn)槟甏眠h(yuǎn),那個(gè)時(shí)候的先進(jìn)處理器放到現(xiàn)在其實(shí)并不算什么特別高級(jí)的東西.

這個(gè)時(shí)鐘樹是我搬的上課PPT.


這個(gè)東西甚至不能叫時(shí)鐘樹.具體的配置是這樣
RTC是由外部32768晶振提供時(shí)鐘.
CK是時(shí)鐘源,16MHz有源晶振.因?yàn)镻LL最大允許8M輸入,需要先2分頻.為了進(jìn)PLL?在PLL處12倍頻2分頻(乘12除2)得到48MHz給到CLK3并作為RCLK,不分頻(/1)直接給到MCLK,二分頻(/2)給PCLK和FCLK.
各個(gè)時(shí)鐘的頻率計(jì)算
RCLK和MCLK:(16/2)*(12/2)=48M;PCLK和FCLK:48/2=24M
一個(gè)參考代碼
USB必須工作在48M所以有一個(gè)專門的時(shí)鐘配置.因?yàn)槟甏眠h(yuǎn),且上課的時(shí)候這塊簡(jiǎn)單帶過(guò)了,也沒(méi)有相關(guān)的實(shí)驗(yàn),這里也是略說(shuō).

進(jìn)階級(jí)別:STM32的時(shí)鐘樹
所有的STM32都有4個(gè)時(shí)鐘源
LSI(內(nèi)部低速RC振蕩器)
HSI(8M/16M內(nèi)部RC振蕩器)
LSE(32768晶振)
HSE(外部高速晶振,有多種型號(hào))
1.Cortex-M3核心的STM32F103C8T6
這個(gè)是cbj入門stm32用的板子,時(shí)鐘樹是stm32里面最簡(jiǎn)單的之一.

40K的LSI時(shí)鐘給到獨(dú)立看門狗定時(shí)器(IWDG)
32768晶振的LSE時(shí)鐘給RTC.
配置8M晶振作為時(shí)鐘源,輸入PLL處9倍頻得72M輸出
將PLL輸出1.5分頻得48M給USB.
SYSCLK直接是72M,可以直接給到AHB總線
APB1最高36M需要先對(duì)72M作2分頻(除2),這里分頻了,在定時(shí)器TIM2,3,4,5,6,7處有2倍頻所以定時(shí)器TIM2,3,4,5,6,7可以工作在最高72M.
APB2最高72M可以不分頻,直接給過(guò)去.
ADC處需要分頻,工作在12M.
代碼(HAL庫(kù))
2.Cortex-M4核心的STM32F411CEU6
先看圖,這個(gè)時(shí)鐘樹相比于STM32F103C8T6要復(fù)雜一些.

32K的LSI時(shí)鐘給到獨(dú)立看門狗定時(shí)器(IWDG)
32768晶振的LSE時(shí)鐘給RTC.
外部晶振25M,在PLL前先M分頻,進(jìn)PLL后N倍頻,P分頻后輸出,Q分頻給USB.
一定查手冊(cè)確定好M,N,P,Q,R這些參數(shù)的取值范圍,否則芯片不能正常工作.
取M=25,N=192,P=2,Q=4,這樣PLL輸出96M,USB處48M.
HCLK直接取用PLL輸出(96M).
FCLK也是96M
APB2不分頻還是96M,APB2作2分頻就是48M.定時(shí)器輸入時(shí)鐘是96M.
I2S接口有單獨(dú)的時(shí)鐘源和單獨(dú)的PLL2,接出來(lái)R分頻(這里先不考慮)
代碼(HAL庫(kù))
3.Cortex-M7核心的STM32H743VIT6
先上框架和總線結(jié)構(gòu),比前面涉及的所有芯片都要復(fù)雜.


自然的,STM32H743的時(shí)鐘樹相比前面的都要復(fù)雜,以至于一個(gè)圖放不下.


簡(jiǎn)略的說(shuō)下大概配置流程.
時(shí)鐘源是HSE,25M高速晶振.在PLL處M取5,N取160,P取2,Q取4,R取2.
sys_ck就置成了25/5*160/2=400M
HPRE處二分頻,這樣HCLK=400/2=200M.AXI和AHB可以工作在200M.
APB1,APB2,APB3都取2分頻,工作在100M,APB4取4分頻,工作在100M
然后就可以滿足基本使用了.
(USB等別的外設(shè)后面再更新)
代碼(HAL庫(kù),要不就得直接配置寄存器)