ARM CORTEX-M3的時鍾


這幾天寫了一段測試代碼,跑在LPC812上面。

很吃驚的發現CPU速度為1M 時鍾 串口為12M時鍾  原來常測試的是STM32的  一般72M 分了再分。。。。

搞了半夜才弄明白,寫在此處備忘。

 

LPC812

PLL輸出為MAINCLK

MAINCLK分頻得到  CPU  內存等用的時鍾

MAINCLK分頻得到 USART等外設用的時鍾

 

STM32

PLL輸出為SYSCLK   SYSCLK分頻得到AHB時鍾

AHB時鍾不分頻 直接供CPU    文檔中叫FCLK

AHB時鍾不分頻直接供內存 FLASH等  文檔中叫HCLK

AHB可APB1分頻供APB1外設    文檔中是PCLK1

AHB可APB2分頻供APB2外設   文檔中是PCLK2

 

附圖

 

 

同時回憶一下STM32。。手頭上隨便找了STM32L051的手冊吧。看了下,STM32比LPC812少了個CPU時鍾的分頻器。所以CPU時鍾就是系統時鍾。 外設必然低於CPU速度。

 

 

最后說一下SYSTICK   該時鍾分頻與否的時鍾基准是CPU的時鍾。雖然叫法不一樣。但這個都是CPU的實際時鍾為基准。

 

再在網上摘一段STM32的說明,以作備忘。

系統時鍾SYSCLK最大頻率為72MHz,它是供STM32中絕大部分部件工作的時鍾源。系統時鍾可由PLL、HSI或者HSE提供輸出,並且它通過AHB分頻器分頻后送給各模塊使用,AHB分頻器可選擇1、2、4、8、16、64、128、256、512分頻。其中AHB分頻器輸出的時鍾送給5大模塊使用:①、送給AHB總線、內核、內存和DMA使用的HCLK時鍾。
②、分頻后送給STM32芯片的系統定時器時鍾(Systick=Sysclk/8=9Mhz)
③、直接送給Cortex的自由運行時鍾(free running clock)FCLK。【ARMJISHU注:FCLK 為處理器的自由振盪的處理器時鍾,用來采樣中斷和為調試模塊計時。在處理器休眠時,通過FCLK 保證可以采樣到中斷和跟蹤休眠事件。 Cortex-M3內核的“自由運行時鍾(free running clock)”FCLK。“自由”表現在它不來自系統時鍾HCLK,因此在系統時鍾停止時FCLK 也繼續運行。FCLK和HCLK 互相同步。FCLK 是一個自由振盪的HCLK。FCLK 和HCLK 應該互相平衡,保證進入Cortex-M3 時的延遲相同。】④、送給APB1分頻器。APB1分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB1外設使用(PCLK1,最大頻率36MHz),另一路送給定時器(Timer)2、3、4倍頻器使用。該倍頻器可選擇1或者2倍頻,時鍾輸出供定時器2、3、4使用。
⑤、送給APB2分頻器。APB2分頻器可選擇1、2、4、8、16分頻, 其輸出一路供APB2外設使用(PCLK2,最大頻率72MHz),另一路送給定時器(Timer)1倍頻器使用。該倍頻器可選擇1或者2倍頻,時鍾輸出 供定時器1使用。另外,APB2分頻器還有一路輸出供ADC分頻器使用,分頻后送給ADC模塊使用。ADC分頻器可選擇為2、4、6、8分頻。

以上提到3種時鍾Fclk、Hclk和Pclk,簡單解釋如下:Fclk為供給CPU內核的時鍾信號,我們所說的cpu主頻為XXXXMHz,就是指的這個時鍾信號,相應的,1/Fclk即為cpu時鍾周期;Hclk為優秀的高性能總線(AHB bus peripherals)供給時鍾信號(AHB為advanced high-performance bus);HCLK :AHB總線時鍾,由系統時鍾SYSCLK 分頻得到,一般不分頻,等於系統時鍾,HCLK是高速外設時鍾,是給外部設備的,比如內存,flash。Pclk為優秀的高性能外設總線(APB bus peripherals)供給時鍾信號(其中APB為advanced peripherals bus)。

在以上的時鍾輸出中,有很多是帶使能控制的,例如AHB總線時鍾、內核時鍾、各種APB1外設、APB2外設等等。當需要使用某模塊時,記得一定要先使能對應的時鍾。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM