在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32為什么要先開啟外設時鐘?

Q4MP_gh_c472c21 ? 來源:strongerHuang ? 作者:strongerHuang ? 2022-10-20 14:10 ? 次閱讀

今天給大家分享兩點內容:

一是,為什么我們要先開啟STM32外設時鐘;二是,關于STM32的 I/O 復用功能及什么時候開啟AFIO時鐘。

STM32為什么要先開啟外設時鐘?

相信很多朋友都曾遇到過這種坑,我最初學習STM32的時候同樣也遇到過。下面,我就來說說為什么我們要先開啟STM32外設模塊時鐘,再對其外設模塊初始化配置?

1、系統架構

不同類型的STM32,它的系統架構各有不同,但原理都類似,由多條主控總線和多條被控總線組成(請參看【參考手冊】存儲器和總線架構章節)。

以STM32F4為例:

● 八條主控總線:

— Cortex-M4F 內核 I 總線、 D 總線和 S 總線

DMA1 存儲器總線

— DMA2 存儲器總線

— DMA2 外設總線

以太網 DMA 總線

USB OTG HS DMA 總線

● 七條被控總線:

— 內部 Flash ICode 總線

— 內部 Flash DCode 總線

— 主要內部 SRAM1 (112 KB)

— 輔助內部 SRAM2 (16 KB)

— 輔助內部 SRAM3 (64 KB)(僅適用于 STM32F42xxx 和 STM32F43xxx 器件)

— AHB1 外設(包括 AHB-APB 總線橋和 APB 外設)

— AHB2 外設

— FSMC

67bffb8c-5034-11ed-a3b6-dac502259ad0.jpg

借助總線矩陣,可以實現主控總線到被控總線的訪問,這樣即使在多個高速外設同時運行期間,系統也可以實現并發訪問和高效運行。

2、關于AHB和APB總線

AHB:Advanced High-performance Bus,即先進的高性能總線。

APB:Advanced Peripheral Bus,即先進的外圍(外設)總線。

上面說了系統總線的架構引伸出來的就是AHB和APB總線,那為什么要講述AHB和APB總線呢?

我們操作的外圍設備一般都是位于AHB和APB總線上,而AHB可以引伸出AHB1、AHB2,甚至AHB3。同樣APB也存在APB1、APB2等。

比如,USART1外設位于APB1總線上,GPIOA位于AHB1高速總線上。

請注意參考手冊中“AHB/APB 總線橋”這一小節,有一條重要的內容:每次芯片復位后,所有外設時鐘都被關閉( SRAM 和 Flash 接口除外)。使用外設前,必須在 RCC_AHBxENR 或 RCC_APBxENR 寄存器中使能其時鐘。

3、STM32時鐘控制

請參看STM32參考手冊關于【復位與時鐘控制RCC】章節。

67e695a8-5034-11ed-a3b6-dac502259ad0.jpg

STM32的時鐘控制模塊因MCU芯片不同,各有差異,但原理都類似,功能也相當豐富。主要的目的就是給相對獨立的外設模塊提供時鐘,也是為了降低整個芯片的功能。

降低功耗是主要原因,還有一個原因,就是為了兼容不同速度的設備,有些高速,有些低速,如果都用高速時鐘,勢必造成浪費。

RCC給外設提供時鐘是一個主要目的,那么為什么要提供時鐘呢? 原因在于外圍設備的寄存器需要時鐘才能工作。你可以把外設當做一個設備,而這個設備需要給它提供電源(時鐘)才能工作。

你在STM32參考手冊的“RCC”章節可能會看到這么一句話:當外設時鐘沒有啟用時,軟件不能讀出外設寄存器的數值,返回的數值始終是0x0。

4、總結

看到這里,相信聰明的你已經明白了為什么我們要先開啟STM32外設模塊時鐘,再配置其外設模塊了。

簡單來說,就是操作外設是通過外設總線來實現,只有外設總線有時鐘了才能操作外設。

坑:

A.先使能外設時鐘,再對其進行配置

6843b698-5034-11ed-a3b6-dac502259ad0.jpg

B.時鐘配置需對應總線

6873d6de-5034-11ed-a3b6-dac502259ad0.png

這種基于標準外設庫的低級錯誤,相信肯定有不少人遇到過,希望提高警惕。

AFIO復用時鐘

有朋友問:“什么時候開啟AFIO時鐘”。寫了上面章節,就順便再講述一下關于STM32的I/O復用功能及什么時候開啟AFIO時鐘。

1、什么是I/O 復用功能?

簡單來說,就是把普通I/O用作其它的功能。如:將PA9引腳用作USART1的Tx引腳,那么我們就把這個Tx引腳稱為PA9的復用功能。

打開數據手冊,會發現類似如下的列表:

68868482-5034-11ed-a3b6-dac502259ad0.jpg

2、什么時候開啟AFIO時鐘?

為了優化芯片引腳封裝的外設數目,可以把一些復用功能重新映射到其他引腳上。設置復用重映射和調試I/O配置寄存器實現引腳的重新映射。這時,復用功能不再映射到它們的原始分配上,而是映射到“重定義功能”上(見上圖)。

這種將引腳重定義到其它引腳上的功能在幾乎所有STM32芯片中都有這個功能,但是實現的方法可能有所不同,其中STM32F1就是通過事件控制的方式將特定功能引腳連接到對應PORT和PIN上。

簡單來說,如果需要使用重定義功能,那么就需要開啟AFIO時鐘。

最后,如果你覺得你的程序可能是因為時鐘配置的問題,不妨上電第一步使能所有時鐘試試。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 存儲器
    +關注

    關注

    38

    文章

    7530

    瀏覽量

    164401
  • STM32
    +關注

    關注

    2273

    文章

    10926

    瀏覽量

    357769
  • 時鐘
    +關注

    關注

    11

    文章

    1747

    瀏覽量

    131849
  • 總線
    +關注

    關注

    10

    文章

    2904

    瀏覽量

    88442
  • AFIO
    +關注

    關注

    0

    文章

    6

    瀏覽量

    2986
收藏 人收藏

    評論

    相關推薦

    STM32的AFIO時鐘什么時候需要開啟

    外設都配備了外設時鐘的開關,當我們不使用某個外設時,可以把這個外設時鐘關閉,從而降低
    發表于 09-21 17:03

    STM32片上外設時鐘使能、失能和復位的區別

    之前分享過一篇文章《關于STM32時鐘配置的那些坑》,里面有說:為什么我們先開啟STM32外設
    發表于 11-15 20:30

    stm32時鐘配置“隱藏”了哪些坑?

    今天分享以下兩點內容:1.為什么我們先開啟STM32外設模塊時鐘;2.關于STM32的 I/O
    發表于 05-29 08:53

    為什么stm32設計如此復雜的時鐘

    IWDG獨立看門狗時鐘四、MCO時鐘輸出五、stm32時鐘系統的編程5.1 系統啟動文件的默認時鐘配置5.2
    發表于 08-06 08:52

    為什么我們先開啟STM32外設模塊時鐘

    置頂公眾號,不錯過每一條消息!今天分享以下兩點內容:1.為什么我們先開啟STM32外設模塊時鐘;2.關于
    發表于 08-18 07:46

    STM32 | STM32的復用時鐘何時開啟?精選資料推薦

    STM32的AFIO時鐘真的是在開啟引腳復用功能的時候開啟嗎?其實并不是~什么是復用?我們知道,STM32有很多
    發表于 08-19 06:09

    什么是STM32的I/O 復用功能呢?什么時候開啟AFIO時鐘

    為什么我們先開啟STM32外設模塊時鐘呢?什么是STM32的I/O 復用功能呢?什么時候
    發表于 11-22 06:23

    STM32外設為什么不需要開啟復用時鐘(AFIO時鐘)呢

    STM32外設為什么不需要開啟復用時鐘(AFIO時鐘)呢?STM32
    發表于 11-24 08:05

    使用STM32開發為什么先開啟外設模塊?什么時候開啟AFIO時鐘

    1.為什么我們先開啟STM32外設模塊時鐘; 2.關于STM32的 I/O 復用功能及什么時
    的頭像 發表于 09-24 12:35 ?8598次閱讀
    使用<b class='flag-5'>STM32</b>開發為什么<b class='flag-5'>要</b><b class='flag-5'>先開啟</b><b class='flag-5'>外設</b>模塊?什么時候<b class='flag-5'>開啟</b>AFIO<b class='flag-5'>時鐘</b>?

    STM32的復用時鐘開啟時間

    STM32的AFIO時鐘真的是在開啟引腳復用功能的時候開啟嗎?其實并不是~
    的頭像 發表于 04-04 17:22 ?5179次閱讀
    <b class='flag-5'>STM32</b>的復用<b class='flag-5'>時鐘</b>的<b class='flag-5'>開啟</b>時間

    STM32的IO口基本操作:初始化結構體,設置系統時鐘開啟外設時鐘資料下載

    電子發燒友網為你提供STM32的IO口基本操作:初始化結構體,設置系統時鐘開啟外設時鐘資料下載的電子資料下載,更有其他相關的電路圖、源代碼
    發表于 03-29 16:49 ?17次下載
    <b class='flag-5'>STM32</b>的IO口基本操作:初始化結構體,設置系統<b class='flag-5'>時鐘</b>,<b class='flag-5'>開啟</b><b class='flag-5'>外設</b><b class='flag-5'>時鐘</b>資料下載

    stm32學習筆記-時鐘系統

    IWDG獨立看門狗時鐘四、MCO時鐘輸出五、stm32時鐘系統的編程5.1 系統啟動文件的默認時鐘配置5.2
    發表于 12-01 14:36 ?10次下載
    <b class='flag-5'>stm32</b>學習筆記-<b class='flag-5'>時鐘</b>系統

    STM32時鐘

    STM32時鐘樹問題1:為什么需要時鐘?答:STM 32的時鐘系統類似于人的心臟,需要為芯片提供時鐘芯片才能正常工作,而
    發表于 12-06 09:51 ?16次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>時鐘</b>樹

    關于STM32的 I/O 復用功能

    今天給大家分享兩點內容: 一是,為什么我們先開啟STM32外設時鐘;二是,關于STM32
    的頭像 發表于 10-20 14:19 ?3761次閱讀

    STM32失能時鐘和復位外設的區別

    STM32失能時鐘和復位外設的區別
    的頭像 發表于 10-17 11:48 ?942次閱讀
    <b class='flag-5'>STM32</b>失能<b class='flag-5'>時鐘</b>和復位<b class='flag-5'>外設</b>的區別
    主站蜘蛛池模板: 99热国内精品| 大色综合色综合资源站 | 国产综合精品久久久久成人影 | 国产精品爱久久久久久久三级 | 成人黄色免费观看 | 日本a级精品一区二区三区 日本a级特黄三级三级三级 | 福利色视频 | 毛片网在线 | 午夜美女久久久久爽久久 | 国产一区二区三区免费大片天美 | 亚洲成网站 | 男生女生靠逼视频 | 网站四虎1515hhcom | 日韩特级毛片 | 俺也来国产精品欧美在线观看 | 欧美福利视频网站 | 久久亚洲国产视频 | 人人人干 | 天天看天天摸色天天综合网 | 免费黄色福利 | 国产亚洲视频在线播放大全 | 激情五月亚洲 | www.色妞| 日本欧美一区二区三区不卡视频 | 夜夜操夜夜摸 | 1000部啪啪勿入十八免费 | 黑色丝袜美女被视频网站 | 国产成人毛片视频不卡在线 | 欧美三级精品 | 好黄好猛好爽好痛的视频 | 亚洲欧美经典 | aaa在线| 日本特黄特黄刺激大片免费 | 免费 在线观看 视频 | 影音先锋色天使 | 天天综合在线视频 | 四虎永久在线精品网址 | 在线观看你懂得 | 在线看视频你懂的 | 色狠狠色综合久久8狠狠色 色狠狠网 | 欧美性猛交xxxx乱大交高清 |