色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32為什么要先開啟外設(shè)時(shí)鐘?

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

今天給大家分享兩點(diǎn)內(nèi)容:

一是,為什么我們要先開啟STM32外設(shè)時(shí)鐘;二是,關(guān)于STM32的 I/O 復(fù)用功能及什么時(shí)候開啟AFIO時(shí)鐘。

STM32為什么要先開啟外設(shè)時(shí)鐘?

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

1、系統(tǒng)架構(gòu)

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

以STM32F4為例:

● 八條主控總線:

— Cortex-M4F 內(nèi)核 I 總線、 D 總線和 S 總線

DMA1 存儲(chǔ)器總線

— DMA2 存儲(chǔ)器總線

— DMA2 外設(shè)總線

以太網(wǎng) DMA 總線

USB OTG HS DMA 總線

● 七條被控總線:

— 內(nèi)部 Flash ICode 總線

— 內(nèi)部 Flash DCode 總線

— 主要內(nèi)部 SRAM1 (112 KB)

— 輔助內(nèi)部 SRAM2 (16 KB)

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

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

— AHB2 外設(shè)

— FSMC

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

借助總線矩陣,可以實(shí)現(xiàn)主控總線到被控總線的訪問,這樣即使在多個(gè)高速外設(shè)同時(shí)運(yùn)行期間,系統(tǒng)也可以實(shí)現(xiàn)并發(fā)訪問和高效運(yùn)行。

2、關(guān)于AHB和APB總線

AHB:Advanced High-performance Bus,即先進(jìn)的高性能總線。

APB:Advanced Peripheral Bus,即先進(jìn)的外圍(外設(shè))總線。

上面說了系統(tǒng)總線的架構(gòu)引伸出來的就是AHB和APB總線,那為什么要講述AHB和APB總線呢?

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

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

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

3、STM32時(shí)鐘控制

請參看STM32參考手冊關(guān)于【復(fù)位與時(shí)鐘控制RCC】章節(jié)。

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

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

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

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

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

4、總結(jié)

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

簡單來說,就是操作外設(shè)是通過外設(shè)總線來實(shí)現(xiàn),只有外設(shè)總線有時(shí)鐘了才能操作外設(shè)。

坑:

A.先使能外設(shè)時(shí)鐘,再對其進(jìn)行配置

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

B.時(shí)鐘配置需對應(yīng)總線

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

這種基于標(biāo)準(zhǔn)外設(shè)庫的低級錯(cuò)誤,相信肯定有不少人遇到過,希望提高警惕。

AFIO復(fù)用時(shí)鐘

有朋友問:“什么時(shí)候開啟AFIO時(shí)鐘”。寫了上面章節(jié),就順便再講述一下關(guān)于STM32的I/O復(fù)用功能及什么時(shí)候開啟AFIO時(shí)鐘。

1、什么是I/O 復(fù)用功能?

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

打開數(shù)據(jù)手冊,會(huì)發(fā)現(xiàn)類似如下的列表:

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

2、什么時(shí)候開啟AFIO時(shí)鐘?

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

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

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

最后,如果你覺得你的程序可能是因?yàn)闀r(shí)鐘配置的問題,不妨上電第一步使能所有時(shí)鐘試試。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7514

    瀏覽量

    164004
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10910

    瀏覽量

    356604
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1736

    瀏覽量

    131587
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2891

    瀏覽量

    88178
  • AFIO
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    2967
收藏 人收藏

    評論

    相關(guān)推薦

    STM32的AFIO時(shí)鐘什么時(shí)候需要開啟

    外設(shè)都配備了外設(shè)時(shí)鐘的開關(guān),當(dāng)我們不使用某個(gè)外設(shè)時(shí),可以把這個(gè)外設(shè)時(shí)鐘關(guān)閉,從而降低
    發(fā)表于 09-21 17:03

    STM32片上外設(shè)時(shí)鐘使能、失能和復(fù)位的區(qū)別

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

    stm32時(shí)鐘配置“隱藏”了哪些坑?

    今天分享以下兩點(diǎn)內(nèi)容:1.為什么我們先開啟STM32外設(shè)模塊時(shí)鐘;2.關(guān)于STM32的 I/O
    發(fā)表于 05-29 08:53

    為什么stm32設(shè)計(jì)如此復(fù)雜的時(shí)鐘

    IWDG獨(dú)立看門狗時(shí)鐘四、MCO時(shí)鐘輸出五、stm32時(shí)鐘系統(tǒng)的編程5.1 系統(tǒng)啟動(dòng)文件的默認(rèn)時(shí)鐘配置5.2
    發(fā)表于 08-06 08:52

    為什么我們先開啟STM32外設(shè)模塊時(shí)鐘

    置頂公眾號,不錯(cuò)過每一條消息!今天分享以下兩點(diǎn)內(nèi)容:1.為什么我們先開啟STM32外設(shè)模塊時(shí)鐘;2.關(guān)于
    發(fā)表于 08-18 07:46

    STM32 | STM32的復(fù)用時(shí)鐘何時(shí)開啟?精選資料推薦

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

    什么是STM32的I/O 復(fù)用功能呢?什么時(shí)候開啟AFIO時(shí)鐘

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

    STM32外設(shè)為什么不需要開啟復(fù)用時(shí)鐘(AFIO時(shí)鐘)呢

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

    使用STM32開發(fā)為什么先開啟外設(shè)模塊?什么時(shí)候開啟AFIO時(shí)鐘?

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

    STM32的復(fù)用時(shí)鐘開啟時(shí)間

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

    STM32的IO口基本操作:初始化結(jié)構(gòu)體,設(shè)置系統(tǒng)時(shí)鐘開啟外設(shè)時(shí)鐘資料下載

    電子發(fā)燒友網(wǎng)為你提供STM32的IO口基本操作:初始化結(jié)構(gòu)體,設(shè)置系統(tǒng)時(shí)鐘,開啟外設(shè)時(shí)鐘資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼
    發(fā)表于 03-29 16:49 ?17次下載
    <b class='flag-5'>STM32</b>的IO口基本操作:初始化結(jié)構(gòu)體,設(shè)置系統(tǒng)<b class='flag-5'>時(shí)鐘</b>,<b class='flag-5'>開啟</b><b class='flag-5'>外設(shè)</b><b class='flag-5'>時(shí)鐘</b>資料下載

    stm32學(xué)習(xí)筆記-時(shí)鐘系統(tǒng)

    IWDG獨(dú)立看門狗時(shí)鐘四、MCO時(shí)鐘輸出五、stm32時(shí)鐘系統(tǒng)的編程5.1 系統(tǒng)啟動(dòng)文件的默認(rèn)時(shí)鐘配置5.2
    發(fā)表于 12-01 14:36 ?10次下載
    <b class='flag-5'>stm32</b>學(xué)習(xí)筆記-<b class='flag-5'>時(shí)鐘</b>系統(tǒng)

    STM32時(shí)鐘

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

    關(guān)于STM32的 I/O 復(fù)用功能

    今天給大家分享兩點(diǎn)內(nèi)容: 一是,為什么我們先開啟STM32外設(shè)時(shí)鐘;二是,關(guān)于STM32
    的頭像 發(fā)表于 10-20 14:19 ?3696次閱讀

    STM32失能時(shí)鐘和復(fù)位外設(shè)的區(qū)別

    STM32失能時(shí)鐘和復(fù)位外設(shè)的區(qū)別
    的頭像 發(fā)表于 10-17 11:48 ?888次閱讀
    <b class='flag-5'>STM32</b>失能<b class='flag-5'>時(shí)鐘</b>和復(fù)位<b class='flag-5'>外設(shè)</b>的區(qū)別
    主站蜘蛛池模板: 老司机午夜影院试看区| 久久黄色网| 91久久偷偷看嫩草影院无费| 亚洲九九精品| 亚洲成A人片在线观看中文不卡| 日韩欧美视频一区二区| 男人天堂2018亚洲男人天堂| 久久亚洲精品成人| 久久国产欧美| 精品无码国产AV一区二区三区| 国产又粗又猛又爽黄老大爷| 国产女合集小岁9三部| 国产精品69人妻无码久久| 国产h视频免费观看| 成人毛片免费在线观看| www伊人网| 成人在线观看国产| 国产成+人欧美+综合在线观看| 国产 亚洲 中文在线 字幕| 德国xxxx| 动漫女生的逼| 国产精品 中文字幕 亚洲 欧美 | 国产人妻人伦精品9| 国产区精品综合在线| 国产午夜精品一区二区| 国外经典三级| 久久精品日本免费线| 美女被强奷到抽搐的动态图| 欧美猛男gaygayxxgv| 日本在线免费播放| 乌克兰成人性色生活片| 亚洲AV电影天堂男人的天堂| 亚洲欧美日韩在线码不卡| 羽月希被黑人吃奶dasd585| 91九色网址| 成人影片下载网站| 国产熟妇无码一区二| 精品精品国产自在现拍| 免费99精品国产自在现线| 日本高清免费在线| 亚洲 欧美 国产 综合 播放|