娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月13日(星期五)

2019年06月13日 | STM32時鐘樹與啟動過程時鐘設置分析

發布者:MysticGarden 來源: eefocus關鍵字:STM32  時鐘樹  啟動過程  時鐘設置 手機看文章 掃描二維碼
隨時隨地手機看文章

如果你要深入學習STM32,那么你就應該深入研究STM32從啟動開始到結束的各個過程,清楚認識整個過程,才會避免在今后的開發中遇到各種玄學問題(雖然博主也經常遇到各種玄學問題),很多情況下玄學問題都是因為自身對問題沒有足夠深入的認識。


啟動過程???許多剛入門STM32的小白可能會一臉懵逼,我可以正常的寫流水燈程序呀,我從來就沒設置過啟動過程。那么說明你對STM32的固件庫還沒有足夠清晰的認識,我們雖然沒有足夠的能力去寫啟動程序,但是我們應該學會去閱讀、認識這個過程。此處借助原子的Template工程沒有資料的從此處下載:啟動程序是./CORE/startup_stm32f40_41xxx.s


這是一段匯編代碼,主要是一些內存、中斷向量、時鐘的初始化。本博的匯編基礎為零(留下不學無術的眼淚),有興趣的參考如下博文介紹:


STM32啟動過程--啟動文件--分析


STM32時鐘樹

1.為什么要有時鐘樹:

    學過其他的MCU(AVR、51)的同學都知道,哪有什么時鐘樹,時鐘全都是梭哈的統一時鐘,但是為什么STM32要煞費心機構造這樣一個復雜時鐘樹呢,當然是為了低功耗,對于時鐘頻率要求高的掛載在頻率高的時鐘線。


2.時鐘樹結構簡介

   STM32具有多個時鐘源,同時可編程配置時鐘選擇。首先我們先官方手冊分析四種為什么分析STM32時鐘樹結構:


首先我們記住幾個關鍵的名詞:


HSE( High Speed External ):高速外部時鐘、LSE(Low Speed External):低速內部時鐘、HSI(High Speed Internal):高速內部時鐘以及 LSI(Low Speed Internal):低速內部時鐘。(建議借助英文理解,方便記憶)


看到看到上面的時鐘樹構造圖各位估計懵了,沒關系,我帶大家一步一步分析(分析SYSCLK產生過程)


大多數配置方式是選擇HSE作為時鐘源,過程路徑:


HSE    -->   倍頻器   --> PLLCLK     -->  SYSCLK


但是,我們就產生一個以為了,我板載 8M外部晶振,在代碼中怎么配置選擇門和倍頻器得到官方標準的 168M SYSCLK呢


下面我們走進代碼看看是怎么一回事:


我們來到啟動文件的182行:


在keil平臺下我們跳進函數看看(編譯后才能跳轉):


void SystemInit(void)

{

  /* FPU settings ------------------------------------------------------------*/

  #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)

    SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */

  #endif

  /* Reset the RCC clock configuration to the default reset state ------------*/

  /* Set HSION bit */

  RCC->CR |= (uint32_t)0x00000001;

 

  /* Reset CFGR register */

  RCC->CFGR = 0x00000000;

 

  /* Reset HSEON, CSSON and PLLON bits */

  RCC->CR &= (uint32_t)0xFEF6FFFF;

 

  /* Reset PLLCFGR register */

  RCC->PLLCFGR = 0x24003010;

 

  /* Reset HSEBYP bit */

  RCC->CR &= (uint32_t)0xFFFBFFFF;

 

  /* Disable all interrupts */

  RCC->CIR = 0x00000000;

 

#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)

  SystemInit_ExtMemCtl(); 

#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */

         

  /* Configure the System clock source, PLL Multiplier and Divider factors, 

     AHB/APBx prescalers and Flash settings ----------------------------------*/

  SetSysClock();    /*注意*/

 

  /* Configure the Vector Table location add offset address ------------------*/

#ifdef VECT_TAB_SRAM

  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */

#else

  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */

#endif

}

根據官方注釋,我們可以知道這是在開啟各個時鐘源。


跳進setSysClock();


跳入PLL_M的宏定義代碼段

通過這里我們就可以計算出我們的PLLCLK的數值了


PLLCLK = (HSE / PLL_M )   *  PLL_N    /     PLL_P;


PLLCLK = (8M / 8 )   * 336 / 2 = 168M


但是別忘了,我們還有個選擇門沒有配置,同樣在 SetSysClock 中


但是這樣就ok了嗎,注意,我們一直沒定義HSE的值,并且HSE是可以變化的,當然會留接口給我們設置,在stm32f4xx.h中:


這樣就可以獲得我們需要的168M SYSCLK了


補充,AHB  和 APB1、APB2的相關配置也在 SetSysClock 中,你可以閱讀相應的源代碼何修改配置去得到想要的時鐘參數


通過  jlink 調試可以獲得我們的時鐘數值(源代碼)


關鍵字:STM32  時鐘樹  啟動過程  時鐘設置 引用地址:STM32時鐘樹與啟動過程時鐘設置分析

上一篇:STM32-串口通訊工作原理
下一篇:用stm32Cube生成103c8t6的usb驅動

推薦閱讀

近日,IHS Markit公布了前20大工業半導體廠商排名,ADI由于收購了Linear,排名一下子由第五躍居至第二。小編在這里特別統計了各家公司的主要產品和面向的市場,文中只談及關于工業部分,其他部分暫且不表。1德州儀器 德州儀器作為世界上最大的模擬電路技術部件制造商,全球領先的半導體跨國公司,以開發、制造、銷售半導體和芯片技術聞名于世,主要從事模...
前日豐田在東京召開發布會,主題是《Toyota challenge Aiming to Popularize BEVs》,這個議題內涵了很多的東西。 1)豐田的全球市場情況豐田自己在經營的市場來看,主要分為日本、北美、歐洲、東南亞還有其他包含(南美、中東和非洲區域)。從增長趨勢來看,最大的兩塊由于人口和市場需求的原因,再努力也在衰減。對于豐田的增量市場主要在歐洲和東南...
6月12日,證監會同意華興源創發行股份購買資產并募集配套資金的注冊申請,這是首單科創板上市公司重大資產重組項目。證監會表示,下一步將繼續研究優化注冊制下并購重組審核及注冊流程,完善監管服務,進一步激發并購重組市場活力,一如既往積極支持上市公司通過并購重組壯大主業,充分發揮市場機制作用,更好服務實體經濟。回顧此次收購案,從2019年12月6...
AMD和Intel在CPU的拉鋸戰已持續多年,在zen2架構下AMD的CPU有了大幅提升,市場份額逐漸擴大,而隨著Intel引入10nm工藝后,AMD在CPU市場或再度承壓。AMD在銳龍處理器之后,性能、工藝也有優勢了,尤其是在EPYC服務器產品線上,7nm Zen2開始就做到了64核128線程,友商Intel多年來都是28核56線程。眼看AMD的市場份額逐漸擴大,Intel也開始發力。今年4月,英...

史海拾趣

問答坊 | AI 解惑

stm32研討會資料

電壓檢測,定時器的使用等等問題的解決 …

查看全部問答∨

電賽C題資料

本帖最后由 paulhyde 于 2014-9-15 09:21 編輯 電賽C的一些資料,或許有重復的。但是也會有一點用。 [ 本帖最后由 koolah 于 2009-9-3 21:29 編輯 ]  …

查看全部問答∨

USB協議問題--------

請教各位,現在需要做個USB接口的鍵盤程序,先是通過遙控器按鍵向紅外線接收頭發送信號并解碼 這些部分現已完成 問題:      由于對USB協議不熟,現在正在學習中      1.請教各位,我解碼后的數據怎么 ...…

查看全部問答∨

請教幾個TOPWIN2005燒錄器的問題

在運行TOPWIN2005的時候出現了EAcess violation的錯誤,我點了確定后顯示 Acess violation at address 740b0cc2,read of address 740b0cc2,是怎么回事? 我是第一次用TOPWIN2005,不好意思! 請哪位大俠幫個忙,小妹我不勝感激!…

查看全部問答∨

DeviceIoControl()如何向U盤發送SCSI命令??!!

主要是DeviceIoControl() 的第2個參數如何設置 請大家多多指教!! 那個參數是在哪個頭文件中定義的呢??…

查看全部問答∨

STM32系列中帶FSMC能直接驅動市場上那些7寸以上的TFTLCD?

                                 請問STM32系列中帶FSMC的接口能直接驅動市場上那些7寸以上的TFT LCD ?…

查看全部問答∨

問一個STM32TIM的問題?

問一下哪位朋友用過STM32F103RC 的片子的 我用TIM5做定時器時出錯 老是跳進 void HardFaultException(void) {   /* Go to infinite loop when Hard Fault exception occurs*/   while (1)   {   ...…

查看全部問答∨

開發板申請

本人學習430不久,基本上掌握了基礎應用,希望能申請到這板子能夠學到更多應用! 主要針對485通訊和矩陣鍵盤應用。…

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

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 河津市| 岳阳市| 威宁| 贵阳市| 布拖县| 昌乐县| 南岸区| 革吉县| 琼中| 万全县| 宜兴市| 镇原县| 巍山| 澎湖县| 维西| 富民县| 通海县| 祁阳县| 获嘉县| 江西省| 绿春县| 太康县| 大田县| 常山县| 乌兰浩特市| 梧州市| 安陆市| 彭州市| 商水县| 北辰区| 城固县| 云梦县| 丰台区| 拉萨市| 永定县| 阿拉善左旗| 甘谷县| 蕉岭县| 文成县| 枞阳县| 中西区|