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

你應該知道的STM32F04x單片機時鐘切換教程

發布者:和諧共存最新更新時間:2024-09-12 來源: elecfans關鍵字:單片機  時鐘切換 手機看文章 掃描二維碼
隨時隨地手機看文章

本次編寫的教程主要是針對STM32F04x系列的單片機,對于STM32單片機的時鐘,想必使用過STM32的人都比較清楚,STM32它是基于 Cortex?-Mx系列內核的微處理器,芯片內部集成了豐富的外設。同時也集成了內部的時鐘源。也就是說芯片不需要外接晶振就可以運行。但是大多數的使用情況都是使用了芯片外部的晶振,包括官方的標準固件庫也都是默認使用外部晶振,但是有些特殊情況下,不需要使用外部晶振,這樣可以節省一個晶振和兩個諧振電容,最主要的是可以節省PCB板子的面積。但如果使用內部晶振,就得要編寫程序,更改相關寄存器的值,切換至內部晶振才可以。對于芯片時鐘源切換這樣的事情,對高手來說是很簡單,對于新手來說就有些搞不清了,因此本教程敘述一下STM32F04x系列單片機時鐘源切換的流程。


既然是切換單片機的時鐘源,就不能不了解下芯片內部的時鐘結構,幾乎所有的STM32芯片,官方在手冊中都會描述一下芯片內部的時鐘結構。STM32F04x也不列外,下面是STM32F04x系列單片機的時鐘樹:(摘自官方手冊)

圖中序號說明:

①:外部時鐘源的輸入端。這個時鐘源是系統時鐘,可用的時鐘源頻率范圍是(4~32)MHz。

②:外部實時時鐘的時鐘源輸入端。這個時鐘源是計時使用,所以它的頻率是固定在32.768KHz。

③:芯片內部時鐘輸出端。可以控制相關的寄存器,選擇內部的時鐘信號從這個端口對外輸出。

④:內部高速48MHz的時鐘源。該頻率不需要倍頻就可以直接給芯片的提供48MHz的系統時鐘信號。

⑤:內部低速8MHz的時鐘源。該頻率可以倍頻或不倍頻給系統提供時鐘信號。(但是STM32F04x芯片最高頻率是48MHz)

⑥:PLL倍頻模塊。該模塊可以選擇內部8M或外部時鐘為輸入,經倍頻后給芯片系統提供時鐘信號。

⑦:SW系統時鐘源選擇器。通過控制寄存器來選擇相關的時鐘源為芯片系統使用。

本次要切換的時鐘源是①HSE外部時鐘源和⑤內部8M時鐘源。不知大家是否留意過,市面上出售的各種STM32的開發板其外部的時鐘基本都是8MHz的,這是為什么呢?主要原因是讓初學者更快的上手。大家可以結合上圖的時鐘樹和官方的固件庫就可以得知,芯片內部的時鐘源頻率是8MHz,而官方的固件庫中配置系統時鐘源的時候,定義的相關變量和函數等,也都是用8MHz為基礎進行定義的。這樣一來,初學者就可以暫時不需要很清楚的了解時鐘結構的情況下,快速進行開發。節省了很多的時間,同時也降低了上手的難度。如果一開始就讓初學者要清楚的去了解芯片的時鐘結構,這樣對于能力強的人是無所謂的。但是對新手來說不是一個好的開始,也有可能會打擊學習的信心。

看完芯片的時鐘樹后,在看看官方的固件庫是怎么實現系統時鐘信號的配置:

STM32的芯片在啟動的時候,都是先從啟動文件開始執行的,而上圖中的程序就是在啟動文件中調用的,從上面的程序中可以看出,芯片在啟動的時候使用了(默認)內部的8MHz時鐘。之后是清除與時鐘相關的一切設置,最后調用了一個系統時鐘設置函數,該函數的源代碼如下:

上圖的函數就是在芯片復位完與時鐘相關寄存器后,進行配置系統時鐘源時調用的函數,該函數主要是進行了五個操作,分別是①啟用外部時鐘源,②設置PLL的輸入時鐘源于PLL的倍頻系數,③設置FLASH預取指與延遲周期,④設置系統時鐘分頻系數和外設總線時鐘分頻系數,⑤設置PLL模塊輸出頻率為系統時鐘源。這是官方默認的設置,從這里就可以看出,如果外部使用了8MHz的晶振時,PLL模塊倍頻6倍。則系統的時鐘頻率是8*6=48MHz。如果我們不想使用外部的晶振,則只能在這里進行編程設置相關寄存器的數值,達到我們的目的。具體的程序如下:

上圖是程序的設置過程是:

①開啟內部8MHz時鐘(這一步也可以不寫,因為芯片上電后默認開啟了內部8MHz時鐘)。

②等待內部時鐘穩定。

③配置FLASH預取指與等待周期。

④設置HPRE與PPRE的分頻系數。(一般情況下這兩個總線是不分頻的,除非對功耗有要求則需要分頻)

⑤設置PLL的輸入源和PLL模塊的倍頻系數。

(在設置PLL模塊時,必須先清除對該模塊的相關設置位,因為只有在PLL模塊關閉的情況下才能寫入相關的控制信息)

⑥等待PLL模塊輸出穩定。

⑦設置PLL模塊為系統時鐘。

⑧等待設置PLL模塊為系統時鐘完成。

按照上述過程配置完相關寄存器后,芯片的系統時鐘就設置為內部的8MHz。經過PLL模塊倍頻*6后,系統的最高頻率是8*6=48MHz。

在配置芯片的內部時鐘時,要注意的是:官方的固件庫中默認是使用外部晶振,并在時鐘配置函數SetSysClock中進行了外部時鐘穩定等待,假如外部時鐘啟動失敗的時候,默認是沒有相關函數去處理。所以,如果你的PCB板子上并沒有焊接外部的晶振時,切換時鐘的函數就寫在官方固件庫system_stm32f0xx文件中的SetSysClock函數中,這樣一來啟動過程中就直接將內部時鐘初始化為芯片的系統時鐘。


關鍵字:單片機  時鐘切換 引用地址:你應該知道的STM32F04x單片機時鐘切換教程

上一篇:STM32的IO口灌入電流和輸出驅動電流最大是多少?
下一篇:實戰經驗 | 移植 SBSFU 到 STM32G070 的過程

推薦閱讀最新更新時間:2025-04-29 01:28

STM8 HSI與HSE手動切換時鐘
實驗平臺:思修電子工作室 祥云小王子 開發版 int main(void) { PI_DDR_DDR0=1;//配置PI0端口為輸出模式 PI_CR1_C10=1; //配置PI0端口為推挽輸出模式 PI_CR2_C20=0; //配置PI0端口低速率輸出 led1=1; //PI0輸出為高電平,D1熄滅 while(1) { //************HSI- HSE時鐘手動切換流程及注釋說明************ //如果CLK_CMSR中的主時鐘源為HSI,則CLK_CMSR=0xE1 //如果CLK_CMSR中的主時鐘源為LSI,則CLK_CMSR=0xD2 //如果CLK_CMSR中的
[單片機]
汽車微控制器虛擬控制器的分類與實踐
虛擬控制器(V-ECU)是指通過軟件在模擬環境中運行,模仿實際硬件控制器功能的系統組件。它可用于開發、測試和驗證嵌入式系統,而無需依賴實際的物理硬件。 當前汽車微控制器虛擬控制器主要分為兩類。一類是基于控制器主控芯片的二進制文件(如:HEX,S19),將其跑在芯片對應的PC仿真器上來模擬仿真其行為。還有一類是將ECU控制器中源碼在源代碼端就進行軟硬件的解耦,再通過x86編譯器(如:Mingw或 MSVC編譯器)生成與X86 環境兼容的可執行文件(如FMU文件)運行在仿真環境上,從而進行仿真測試。 根據功能需求,虛擬控制器V-ECU一般分為以下幾類: Type-0/Level-0 V-ECU:應用層功能模型 該類型主要
[嵌入式]
汽車<font color='red'>微控制器</font>虛擬控制器的分類與實踐
國產替代新標桿:紫光THA6車規MCU的功耗控制與熱管理方案
引言:為什么THA6能成為“國產芯”的破局者? 當全球汽車行業因芯片短缺陷入“卡脖子”困境時,紫光同芯的THA6系列車規MCU橫空出世,不僅填補了國產高端MCU的空白,更憑借“功耗控制”與“熱管理”兩大殺手锏,直接對標國際大廠英飛凌TC387。北京貞光科技作為授權代理商,提供硬件、軟件SDK及技術支持,并可現場協助芯片選型和定制服務,助力客戶項目高效落地。 從動力域控制到智能駕駛系統,THA6的足跡遍布新能源汽車核心場景。數據顯示,其主頻高達400MHz,算力超4000 DMIPS,卻能在-40℃至150℃的嚴苛環境下穩定運行。這背后,是一套融合硬件設計、算法優化與生態協作的完整解決方案。 功耗控制:從“能耗大戶”到“節能標
[嵌入式]
基于復旦微電子FM33FT0xxA MCU的觸摸設計方案
基于 FM33FT0xxA 的 觸摸 設計方案是一種應用于汽車電子領域的 觸摸 方案,主要用于汽車閱讀頂燈、空調面板、中控面板的 觸摸 檢測。 該方案中的TSI觸摸模塊使用自電容的方法來檢測觸摸行為,當傳感器PAD處于未被觸摸狀態的時候,傳感器PAD和走線的電場僅能耦合到網絡鋪地上,形成傳感器的靜態電容CS。而在有手指觸摸的情況下,傳感器PAD和手指之間就通過覆蓋層形成了一個對地的電容CF,這使得傳感器PAD的電容值變大。因此,TSI模塊通過檢測傳感器的電容值的變化,可以檢測到觸摸行為。現有應用設計如下所示: 此外,為了方便用戶使用,我們還為用戶提供了上位機圖形化配置界面“TSI Tuner”,其可以便捷地配置觸摸通道
[汽車電子]
基于復旦微電子FM33FT0xxA <font color='red'>MCU</font>的觸摸設計方案
車規級MCU介紹
控制類 芯片 介紹 控制類 芯片 主要就是指 MCU (Microcontroller Unit),即 微控制器 ,又叫 單片機 ,是把CPU的主頻與規格做適當縮減,并將存儲器、定時器、A/D轉換、時鐘、I/O端口及串行通訊等多種功能模塊和接口集成在單個 芯片 上,實現終端控制的功能,具有性能高、功耗低、可編程、靈活度高等優點。 車規級 MCU 示意圖 汽車是 MCU 的一個非常重要的應用領域,據IC Insights數據,2019年全球MCU應用于 汽車電子 的占比約為33%。高端車型中每輛車用到的MCU數量接近100個,從行車電腦、液晶儀表,到發動機、底盤,汽車中大大小小的組件都需要MCU進行把控。 早期
[汽車電子]
車規級<font color='red'>MCU</font>介紹
如何排查GD32 MCU復位是由哪個復位源導致的?
上期為大家講解了GD32 MCU復位包括電源復位和系統復位,其中系統復位還包括獨立看門狗復位、內核軟復位、窗口看門狗復位等,在一個GD32系統中,如果莫名其妙產生了MCU復位,如何排查具體是由哪個復位源導致的呢? GD32 MCU貼心的為大家提供了一個查看復位源的寄存器,如下圖所示,該寄存器的bit26-bit31顯示各種復位狀態,其中LPRSTF表示發生過低功耗復位、WWDGTRSTF表示發上過窗口看門狗復位、FWDGTRSTF表示發生過獨立看門狗復位、SWRSTF表示發生過系統軟復位、PORRSTF表示發生過POR電源復位、EPRSTF表示發生過NRST引腳復位,這幾個狀態標志位為只讀標志位,如果希望清除復位標志,可以通過
[單片機]
如何排查GD32 <font color='red'>MCU</font>復位是由哪個復位源導致的?
愛普特32位MCU在電機控制上的應用
在物聯網飛速發展的科技時代,電機作為各類設備的動力核心,其控制技術的優劣直接決定了設備的性能和效率。而愛普特 32 位 MCU 的出現,為電機控制領域帶來了全新的突破和變革。 電機,這個看似普通卻又至關重要的裝置,如同現代社會的“隱形引擎”,默默驅動著我們生活和工業生產的方方面面。從日常的家用電器,到復雜的工業機械,電機無處不在。然而,要讓電機穩定、高效、精準地運行,并非易事。這背后離不開先進的控制技術,而其中的關鍵之一,就是高性能的 MCU 芯片。 在電機的廣泛應用中,其工作環境往往十分苛刻。各種外界因素,如溫度的劇烈變化、機械振動的沖擊、電流的波動以及復雜的電磁干擾等,都可能對電機的正常運行造成影響。為了應對這些挑戰,
[嵌入式]
愛普特32位<font color='red'>MCU</font>在電機控制上的應用
車載MCU在車身域、動力域、底盤域、座艙域和智駕域的應用
控制類芯片介紹 控制類芯片主要就是指MCU(Microcontroller Unit),即微控制器,又叫單片機,是把CPU的主頻與規格做適當縮減,并將存儲器、定時器、A/D轉換、時鐘、I/O端口及串行通訊等多種功能模塊和接口集成在單個芯片上,實現終端控制的功能,具有性能高、功耗低、可編程、靈活度高等優點。 車規級MCU示意圖 ※資料來源:公開資料、編寫單位提供 汽車是MCU的一個非常重要的應用領域,據IC Insights數據,2019年全球MCU應用于汽車電子的占比約為33%。高端車型中每輛車用到的MCU數量接近100個,從行車電腦、液晶儀表,到發動機、底盤,汽車中大大小小的組件都需要MCU進行把控。
[汽車電子]
小廣播
設計資源 培訓 開發板 精華推薦

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 左云县| 淳安县| 洮南市| 巫溪县| 乐东| 当涂县| 灵川县| 丹凤县| 吉林市| 光山县| 论坛| 化州市| 石棉县| 拉孜县| 潼南县| 美姑县| 韶山市| 浮山县| 崇文区| 昌邑市| 措美县| 兴安盟| 宕昌县| 桃园市| 崇州市| 南充市| 监利县| 马边| 荥阳市| 江都市| 抚松县| 永平县| 延长县| 洞头县| 中江县| 林口县| 禄劝| 射洪县| 新民市| 丹棱县| 克东县|