日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2024年10月18日(星期五)

正在發(fā)生

2021年10月18日 | STM32時鐘樹分析

發(fā)布者:精靈寵兒 來源: eefocus關(guān)鍵字:STM32  時鐘樹  SystemInit()函數(shù) 手機看文章 掃描二維碼
隨時隨地手機看文章

1 STM32總線

首先,說點不靠譜的,APB和AHB總線,我個人感覺這個類似于個人PC系統(tǒng)里的北橋和南橋總線。


南橋總線上掛接的都是鼠標、鍵盤這些慢速的設備,北橋上掛接顯卡等高速設備。南橋頻率低,北橋頻率高。另外,南橋最后也要接到北橋上。


這些感覺都類似于APB和AHB。

  • AHB,是Advanced High performance Bus的縮寫,譯作高級高性能總線,這是一種“系統(tǒng)總線”。

AHB主要用于高性能模塊(如CPU、DMA和DSP等)之間的連接。AHB 系統(tǒng)由主模塊、從模塊和基礎結(jié)構(gòu)(Infrastructure)3部分組成,整個AHB總線上的傳輸都由主模塊發(fā)出,由從模塊負責回應。

  • APB,是Advanced Peripheral Bus的縮寫,這是一種外圍總線。

APB主要用于低帶寬的周邊外設之間的連接,例如UART、1284等,它的總線架構(gòu)不像 AHB支持多個主模塊,在APB里面唯一的主模塊就是APB 橋。再往下,APB2負責AD,I/O,高級TIM,串口1;APB1負責DA,USB,SPI,I2C,CAN,串口2345,普通TIM。


  • 這兩者都是總線,符合AMBA規(guī)范。

ARM公司推出的AMBA片上總線受到了廣大IP開發(fā)商和SoC系統(tǒng)集成者的青睞,已成為一種流行的工業(yè)標準片上結(jié)構(gòu)。AMBA規(guī)范主要包括了AHB(Advanced High performance Bus)系統(tǒng)總線和APB(Advanced Peripheral Bus)外圍總線。


2 STM32F1時鐘系統(tǒng)

2.1 STM32F1時鐘源

在STM32F1中,有五個時鐘源,為HSI、HSE、LSI、LSE、PLL。

①HSI: High Speed Internal 是高速內(nèi)部時鐘,RC振蕩器,頻率為8MHz。

②HSE: High Speed External 是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,頻率范圍為4MHz~16MHz。

③LSI: Low Speed Internal 是低速內(nèi)部時鐘,RC振蕩器,頻率為40kHz。

④LSE: Low Speed External是低速外部時鐘,接頻率為32.768kHz的石英晶體。

⑤PLL: Phase Lock Loop 為鎖相環(huán)倍頻輸出,其時鐘輸入源可選擇為HSI/2、HSE或者HSE/2。倍頻可選擇為2~16倍,但是其輸出頻率最大不得超過72MHz。
在這里插入圖片描述
用戶可通過多個預分頻器配置AHB總線、高速APB2總線和低速APB1總線的頻率。

  • AHB和APB2域的最大頻率是72MHZ。

  • APB1域的最大允許頻率是36MHZ。

  • SDIO接口的時鐘頻率固定為HCLK/2。

  • 40kHz的LSI供獨立看門狗IWDG使用,另外它還可以被選擇為實時時鐘RTC的時鐘源。

  • 另外,實時時鐘RTC的時鐘源還可以選擇LSE,或者是HSE的128分頻。

  • RTC的時鐘源通過RTCSEL[1:0]來選擇。

  • STM32中有一個全速功能的USB模塊,其串行接口引擎需要一個頻率為48MHz的時鐘源。該時鐘源只能從PLL輸出端獲取,可以選擇為1.5分頻或者1分頻,也就是,當需要使用USB模塊時,PLL必須使能,并且時鐘頻率配置為48MHz或72MHz。

  • 另外,STM32還可以選擇一個PLL輸出的2分頻、HSI、HSE、或者系統(tǒng)時鐘SYSCLK 輸出到MCO腳(PA8)上。

系統(tǒng)時鐘SYSCLK,是供STM32中絕大部分部件工作的時鐘源,它可選擇為PLL輸出、HSI或者HSE,(一般程序中采用PLL倍頻到72Mhz)在選擇時鐘源前注意要判斷目標時鐘源是否已經(jīng)穩(wěn)定振蕩。Max=72MHz,它分為2路:
(1)1路送給I2S2、I2S3使用的I2S2CLK,I2S3CLK;
(2)另外1路通過AHB分頻器分頻(1/2/4/8/16/64/128/256/512)分頻后送給以下8大模塊使用:

  • ① 送給SDIO使用的SDIOCLK時鐘。

    • ② 送給FSMC使用的FSMCCLK時鐘。

    • ③ 送給AHB總線、內(nèi)核、內(nèi)存和DMA使用的HCLK時鐘。

    • ④ 通過8分頻后送給Cortex的系統(tǒng)定時器時鐘(SysTick)。

    • ⑤ 直接送給Cortex的空閑運行時鐘FCLK。

    • ⑥ 送給APB1分頻器。APB1分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB1外設使用(PCLK1,最大頻率36MHz),另一路送給定時器(Timer2-7)2、3、4倍頻器使用。該倍頻器可選擇1或者2倍頻,時鐘輸出供定時器2、3、4、5、6、7使用。

    • ⑦ 送給APB2分頻器。APB2分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB2外設使用(PCLK2,最大頻率72MHz),另一路送給定時器(Timer1、Timer8)1、2倍頻器使用。該倍頻器可選擇1或者2倍頻,時鐘輸出供定時器1和定時器8使用。另外,APB2分頻器還有一路輸出供ADC分頻器使用,分頻后得到ADCCLK時鐘送給ADC模塊使用。ADC分頻器可選擇為2、4、6、8分頻。

    • ⑧ 2分頻后送給SDIO AHB接口使用(HCLK/2)。

2.2 時鐘輸出的使能控制

在以上的時鐘輸出中有很多是帶使能控制的,如AHB總線時鐘、內(nèi)核時鐘、各種APB1外設、APB2外設等。


當需要使用某模塊時,必需先使能對應的時鐘。需要注意的是定時器的倍頻器,當APB的分頻為1時,它的倍頻值為1,否則它的倍頻值就為2。


  • 連接在APB1(低速外設)上的設備有:電源接口、備份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看門狗、 Timer2、Timer3、Timer4。注意USB模塊雖然需要一個單獨的48MHz時鐘信號,但它應該不是供USB模塊工作的時鐘,而只是提供給串行接口引擎(SIE)使用的時鐘。USB模塊工作的時鐘應該是由APB1提供的。


  • 連接在APB2(高速外設)上的設備有:GPIO_A-E、USART1、ADC1、ADC2、ADC3、TIM1、TIM8、SPI1、AFIO
    在這里插入圖片描述
    使用HSE時鐘,程序設置時鐘參數(shù)流程:
    1、將RCC寄存器重新設置為默認值 RCC_DeInit;
    2、打開外部高速時鐘晶振HSE RCC_HSEConfig(RCC_HSE_ON);
    3、等待外部高速時鐘晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp();
    4、設置AHB時鐘 RCC_HCLKConfig;
    5、設置高速AHB時鐘 RCC_PCLK2Config;
    6、設置低速速AHB時鐘 RCC_PCLK1Config;
    7、設置PLL RCC_PLLConfig;
    8、打開PLL RCC_PLLCmd(ENABLE);
    9、等待PLL工作 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
    10、設置系統(tǒng)時鐘 RCC_SYSCLKConfig;
    11、判斷是否PLL是系統(tǒng)時鐘 while(RCC_GetSYSCLKSource() != 0x08)
    12、打開要使用的外設時鐘 RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()


下面是STM32軟件固件庫的程序中對RCC的配置函數(shù)(使用外部8MHz晶振)

void RCC_Configuration(void)


{

  RCC_DeInit();

  RCC_HSEConfig(RCC_HSE_ON);   //RCC_HSE_ON——HSE晶振打開(ON)

  HSEStartUpStatus = RCC_WaitForHSEStartUp();

  if(HSEStartUpStatus == SUCCESS)        //SUCCESS:HSE晶振穩(wěn)定且就緒

  {   

    RCC_HCLKConfig(RCC_SYSCLK_Div1);  //RCC_SYSCLK_Div1——AHB時鐘 = 系統(tǒng)時鐘

    RCC_PCLK2Config(RCC_HCLK_Div1);   //RCC_HCLK_Div1——APB2時鐘 = HCLK

    RCC_PCLK1Config(RCC_HCLK_Div2);   //RCC_HCLK_Div2——APB1時鐘 = HCLK / 2

    FLASH_SetLatency(FLASH_Latency_2);    //FLASH_Latency_2  2延時周期

    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);       // 預取指緩存使能

    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);    

   // PLL的輸入時鐘 = HSE時鐘頻率;RCC_PLLMul_9——PLL輸入時鐘x 9

    RCC_PLLCmd(ENABLE);

    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ;    

    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

   //RCC_SYSCLKSource_PLLCLK——選擇PLL作為系統(tǒng)時鐘

    while(RCC_GetSYSCLKSource() != 0x08);        //0x08:PLL作為系統(tǒng)時鐘

  }


  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |   RCC_APB2Periph_GPIOC , ENABLE);

//RCC_APB2Periph_GPIOA    GPIOA時鐘

//RCC_APB2Periph_GPIOB    GPIOB時鐘

//RCC_APB2Periph_GPIOC    GPIOC時鐘

//RCC_APB2Periph_GPIOD    GPIOD時鐘

}


3 STM32F4時鐘系統(tǒng)

3.1 STM32F4時鐘樹

下圖是STM32F4系列的時鐘樹。 在這里插入圖片描述

STM32的時鐘源主要有:內(nèi)部時鐘、外部時鐘、鎖相環(huán)倍頻輸出時鐘。內(nèi)部時鐘、外部時鐘又分為告訴時鐘、低速時鐘。鎖相環(huán)倍頻輸出時鐘又主PLL時鐘、PLLI2S時鐘。具體如下圖所示。


1、LSI低速內(nèi)部時鐘:由內(nèi)部RC振蕩器產(chǎn)生,頻率為32kHz。如圖區(qū)域①;
2、HSI高速內(nèi)部時鐘:由內(nèi)部RC振蕩器產(chǎn)生,頻率為16MHz。如圖區(qū)域②;
3、LSE低速外部時鐘:一般由外部晶振提供,頻率為32.768kHz。如圖區(qū)域③;
4、HSE低速外部時鐘:一般由外部晶振提供,頻率為4~26MHz。如圖區(qū)域④;
5、主PLL時鐘:由HSE或HSI提供。如圖區(qū)域⑤;
6、PLLI2S時鐘:由HSE或HSI提供。如圖區(qū)域⑥;
在這里插入圖片描述

3.2 時鐘的流向

我們已經(jīng)知道了各個時鐘源的輸入,那么有了輸入的時鐘源,各個時鐘源又是分別輸出給哪些外設工作。我們分別從時鐘源輸入處開始,根據(jù)走線和結(jié)點,尋找到相應的輸出。對應編號如下圖中所示。


1、LSI低速內(nèi)部時鐘:供給獨立看門狗⑴、實時時鐘RTC⑵
2、HSI高速內(nèi)部時鐘:供給系統(tǒng)時鐘⑸、時鐘輸出1MCO1⑷、主PLL時鐘⑹、PLLI2S時鐘⑺
3、LSE低速外部時鐘:供給實時時鐘RTC⑵、時鐘輸出1MCO1⑷
4、HSE低速外部時鐘:供給系統(tǒng)時鐘⑸、實時時鐘RTC⑵、主PLL時鐘⑹、PLLI2S時鐘⑺、時鐘輸出1MCO1⑷、時鐘輸出2MCO2⑶
5、主PLL時鐘:供給系統(tǒng)時鐘⑸、外設時鐘⑻、時鐘輸出1MCO1⑷、時鐘輸出2MCO2⑶
6、PLLI2S時鐘::供給I2S時鐘⑼、時鐘輸出1MCO1⑷、時鐘輸出2MCO2⑶

在這里插入圖片描述

HSI、HSE、主PLL時鐘都可以供給系統(tǒng)時鐘⑸,STM32的很多外設是掛載在AHB、APB總線橋上的,這些外設的時鐘又是怎么樣的,這就和系統(tǒng)時鐘的流向有關(guān)了,系統(tǒng)時鐘的流向分析如下:
1、供給時鐘輸出2MCO2⑶
2、供給以太網(wǎng)PTP時鐘⑽
3、經(jīng)AHBPRESC預分頻器⑾后:HCLK到AHB總線、內(nèi)核、存儲器和DMA⒁,到Cortex系統(tǒng)定時器⒂,自由運行時鐘⒃
4、經(jīng)AHBPRESC預分頻器⑾、APBxPRESC預分頻器⑿后:供給APBx外設時鐘⒄
5、經(jīng)AHBPRESC預分頻器⑾、APBxPRESC預分頻器后⑿,再經(jīng)倍頻條件判斷⒀處理后:供給APBx定時器時鐘⒅


3.3 ST固件庫中提供的PLL配置函數(shù)

voidRCC_PLLConfig(uint32_tRCC_PLLSource,uint32_tPLLM,uint32_tPLLN,uint32_tPLLP,uint32_tPLLQ);
RCC_PLLSource為PLL的時鐘源選擇, 可選擇為RCC_PLLSource_HSE或者RCC_PLLSource_HSI.
這里的PLLM, PLLN, PLLP, PLLQ便指的是上述的幾個分頻器的分頻因子.
并且這些分頻因子取值是有限制如下:
2 <= PLLQ <= 15
2 <= PLLM <= 63
192 <= PLLN <= 432
PLLP 只能是2, 4, 6, 8其中之一.
其中PLLN就是PLL的倍頻倍數(shù)N.
并且, PLL之后得到的頻率不得超過器件的限制頻率.

舉個實際的例子, 外部晶振為8MHz, 我們想讓CPU運行于168MHz, 該怎么配置?
因為PLLM最小只能是2, 所以選擇PLLM為2.
這里8MHz的HSE被PLLM二分頻后只有4MHz了.
PLLP最小也只能是2, 我們所需要的SYSCK為168MHz, 所以從VCO出來的頻率為168 * 2 = 336MHz.
則倍頻倍數(shù)N為336 / 4 = 84, 所以PLLN為84.
PLLQ是USB OGT FS的時鐘, 固定為48MHz, 所以預分頻因子為336 / 48 =7.
則PLL配置函數(shù)應該為:
RCC_PLLConfig(RCC_PLLSource_HSE,2,84,2,7);

當然只使用這一句就不可能讓PLL工作的, 還需要配合其它配置才行.


4 用多個時鐘源、分層控制時鐘的好處

1、一個外設有多個時鐘源:可以根據(jù)需要選擇相應頻率的時鐘源。
2、分層、分開控制外設時鐘:使得各個外設的時鐘都是可控的,各個外設有對應的時鐘控制開關(guān),實際應用過程根據(jù)需要開啟相應外設時鐘,不需要的外設時鐘不開啟,可以降低功耗。

關(guān)鍵字:STM32  時鐘樹  SystemInit()函數(shù) 引用地址:STM32時鐘樹分析

上一篇:STM32系統(tǒng)時鐘樹分析
下一篇:看懂時鐘樹——掌握系統(tǒng)時鐘配置

推薦閱讀

云計算、大數(shù)據(jù)、物聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)、人工智能等新一代信息技術(shù)快速演進,硬件、軟件、服務等核心技術(shù)體系加速重構(gòu),正在引發(fā)電子信息產(chǎn)業(yè)新一輪變革。單點技術(shù)和單一產(chǎn)品的創(chuàng)新正加速向多技術(shù)融合互動的系統(tǒng)化、集成化創(chuàng)新轉(zhuǎn)變,創(chuàng)新周期大幅縮短。信息技術(shù)與制造、材料、能源、生物等技術(shù)的交叉滲透日益深化,智能控制、智能材料、生物芯片等交叉融合創(chuàng)...
近日國際動力電池市場調(diào)研機構(gòu)SNE Research發(fā)布2019年8月全球動力電池出貨量排名,數(shù)據(jù)顯示第三名比亞迪的動力電池出貨量同比大跌61.1%,全球第三的位置不保,被LG化學取而代之,柏銘科技認為這主要是因為國內(nèi)新能源汽車市場受補貼縮減的影響,新能源汽車銷量大幅下滑所致。新能源汽車市場遭遇寒流,比亞迪受傷據(jù)新能源汽車銷量數(shù)據(jù)顯示,在過去數(shù)年中...
10月17日消息,據(jù)IDC最新數(shù)據(jù),在600美元以上價位段的智能手機市場,上半年該價位市場的容量約為2350萬臺,華為和蘋果各占4成以上份額,華為領先蘋果0.1%的份額。圖源:IDC在600美元以上價位段的高端市場,上半年蘋果通過4G機型的品牌號召力仍然可以穩(wěn)定占據(jù)4成以上份額。此次iPhone 12系列將覆蓋699~1099美元的價格區(qū)間,而其中mini版起售價格持平于上一...
隨著電動汽車的蓬勃發(fā)展,汽車設計工程師始終在努力提高效率和可靠性,并降低電動汽車動力總成系統(tǒng)(在整車質(zhì)量中占比最大)的重量。 為了實現(xiàn)更小、更可靠的系統(tǒng)以延長行駛里程,工程師改為使用分布式電源架構(gòu),因為在這種架構(gòu)中,隔離式柵極驅(qū)動器配有專用的偏置電源,可以提高系統(tǒng)對單點故障的反應能力。例如,如果其中一個偏置電源失效,其他偏置電源...

史海拾趣

問答坊 | AI 解惑

包裝機的步進電機控制系統(tǒng)

為了提高小袋包裝機的包裝質(zhì)量,滿足生產(chǎn)的需要,將小袋包裝機的機械傳動部分,改為步進電機控制,再用步進電機控制器控制步進電機工作。其特點是機械傳動部分簡單,控制系統(tǒng)比較先進,人為誤差較小,故障率較低,操作簡單,包裝材料利用率提高,容易維修。它 ...…

查看全部問答∨

關(guān)于電源設計的一些資料

關(guān)于電源設計的一些資料…

查看全部問答∨

wince下怎么樣自動打開藍牙功能?

我的是遠峰的GPS機器,用的是WINCE5.0,默認開機后藍牙是關(guān)閉的,進入菜單后,自動就開啟了,現(xiàn)在我想通過編程讓它打開, 我在MSDN上發(fā)現(xiàn)用BthSetMode函數(shù)可以,但它是用于PPC下面的,在CE下根本用不了,請高手幫忙解決下!…

查看全部問答∨

有關(guān)UDA1341音頻驅(qū)動的問題?

  應用層調(diào)用waveoutsetvolume的時候,發(fā)現(xiàn)驅(qū)動層并沒有調(diào)用1341的L3-interface來控制音量(2440 _WrL3Data函數(shù))。但是音量確實是變了。 這么說來音量除了通過L3-interface控制,還可以通過其它方式控制?…

查看全部問答∨

數(shù)字電視機頂盒(STB)開發(fā)學習平臺

數(shù)字電視機頂盒(STB)開發(fā)學習平臺 此平臺包括一臺高品質(zhì)的成熟的dvb-s接收機和完全開放的源代碼、電原理圖和PCB圖,廣大dvb愛好者和單片機愛好者可以用他來學習和了解DVB的軟件和硬件結(jié)構(gòu)及嵌入式開發(fā)的整個過程,也可用來接收衛(wèi)星電視節(jié)目 硬 ...…

查看全部問答∨

請教RAM分配

各位大俠,小弟調(diào)試一款800*600的LCD時,OS系統(tǒng)文件DOWNLOAD進去就不能夠顯示正常:其中大約有2/5的顯示是開機畫面的前2/5部分.后面的顯示就畫屏.     請大家?guī)兔纯聪旅娴脑O置是否正確?     若不正確,請問需要如何更改?根據(jù)什 ...…

查看全部問答∨

求高手修改個路由器固件

求高手修改個路由器固件  有這方面經(jīng)驗的速度聯(lián)系我  QQ:746166578…

查看全部問答∨

麻煩看看這個占空比是多少

TimerA 增計數(shù)模式輸出模式7TACCR0=15TACCR1=3…

查看全部問答∨

使用新技巧 設計PCB時抗靜電放電的方法(下)

    *在能被ESD直接擊中的區(qū)域,每一個信號線附近都要布一條地線。   *I/O電路要盡可能靠近對應的連接器。   *對易受ESD影響的電路,應該放在靠近電路中心的區(qū)域,這樣其他電路可以為它們提供一定的屏蔽作用。   *通常在 ...…

查看全部問答∨

高頻變壓器設計問題請高人指點

開關(guān)電源設計時高頻變壓器該怎樣計算他的參數(shù),設計時只是知道開關(guān)電源的輸出電壓、輸出電流、頻率、效率該怎樣計算。現(xiàn)在就是不知道變壓器的反射電壓該怎樣明確計算。…

查看全部問答∨
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved