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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

關(guān)于 STM32 時鐘配置的那些坑

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-08 12:06 ? 次閱讀

今天分享以下兩點內(nèi)容:

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

2.關(guān)于STM32的 I/O 復(fù)用功能及什么時候開啟AFIO時鐘;

1為什么我們要先開啟STM32外設(shè)時鐘

講述本節(jié)內(nèi)容之前先說一個案例:

前段時間,有一個朋友為配置EXTI的代碼折騰了一天,最終沒有結(jié)果。于是問了我這樣一個問題:“你用過STM32F051C8T6的外部中斷嗎,就是GPIO管腳做中斷,我這邊就是進不了中斷”。

然后他把基于標準外設(shè)庫、寄存器寫的代碼都給我發(fā)過來了。我仔細看了又看,沒發(fā)現(xiàn)有什么毛病啊。(但是,代碼是截圖分來給我發(fā)過來的)。

于是,我將之前配置IO外部中斷的代碼,按照他(PB2)的要求,寫成一個“EXTI配置”函數(shù)發(fā)給他,他直接拷貝過去,成功了。

于是,他仔細對比了代碼,終于發(fā)現(xiàn)了問題的原因,配置的順序不對,使能時鐘不是在最開始。

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

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

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

如STM32F4:

● 八條主控總線:

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

DMA1 存儲器總線

— DMA2 存儲器總線

— 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

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

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

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

APB:Advanced Peripheral Bus,即先進的外圍(外設(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è)時鐘都被關(guān)閉( SRAM 和 Flash 接口除外)。使用外設(shè)前,必須在 RCC_AHBxENR 或 RCC_APBxENR 寄存器中使能其時鐘。

3.STM32時鐘控制

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

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

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

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

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

4.總結(jié)

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

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

坑:

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

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

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

2關(guān)于STM32的I/O復(fù)用功能及什么時候開啟AFIO時鐘

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

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

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

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

2.什么時候開啟AFIO時鐘

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

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

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

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

推薦閱讀:

1.STM32標準外設(shè)庫SPL轉(zhuǎn)換成Cube LL

2.利用STM32 ST-LINK Utility查看內(nèi)核運行狀態(tài),助你判斷程序是否跑飛

5最后

若覺得文章好,記得點贊、分享。掃描下面二維碼、關(guān)注,在底部菜單中查看更多精彩內(nèi)容!

長按識別圖中二維碼關(guān)注

贊賞是對作者的認可與支持!

原文標題:關(guān)于STM32時鐘配置的那些坑

文章出處:【微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

    關(guān)注

    134

    文章

    9265

    瀏覽量

    373265
  • STM32
    +關(guān)注

    關(guān)注

    2282

    文章

    10986

    瀏覽量

    361111
  • Atmel
    +關(guān)注

    關(guān)注

    17

    文章

    312

    瀏覽量

    108183
  • AMBA
    +關(guān)注

    關(guān)注

    0

    文章

    70

    瀏覽量

    15259
  • AFIO
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    3084
收藏 0人收藏

    評論

    相關(guān)推薦

    Modbus TCP通信的那些!你遇到過幾個?

    凌晨三點,產(chǎn)線驟停!觸摸屏瘋狂報通訊超時,老板奪命連環(huán)Call轟炸,而你盯著PLC的Error燈狂閃、儀表數(shù)據(jù)集體躺平——Modbus TCP的,誰踩誰懂! 別慌!這篇Modbus TCP常見問題
    的頭像 發(fā)表于 04-16 17:17 ?176次閱讀
    Modbus TCP通信的<b class='flag-5'>那些</b><b class='flag-5'>坑</b>!你遇到過幾個?

    STM32CubeMX用于STM32配置和初始化C代碼生成

    電子發(fā)燒友網(wǎng)站提供《STM32CubeMX用于STM32配置和初始化C代碼生成.pdf》資料免費下載
    發(fā)表于 02-26 17:32 ?656次下載

    時鐘配置來啦!HPMicro Tool Web v0.5.0 更新

    各位先楫的小伙伴們久等啦,先楫時鐘配置工具跟隨0.5.0版本正式上線啦!還有個好消息要告訴大家,我們已將先楫配置工具VSCode插件發(fā)布到了VSCode插件市場,各位小伙伴們再也不用手動安裝插件了
    的頭像 發(fā)表于 02-08 13:43 ?350次閱讀
    <b class='flag-5'>時鐘</b><b class='flag-5'>配置</b>來啦!HPMicro Tool Web v0.5.0 更新

    一千余字解讀stm32時鐘

    轉(zhuǎn)換為多個外部設(shè)備的周期性運作。這種時鐘“能量”的傳遞路徑類似于大樹的養(yǎng)分由主干流向各個分支,因此被稱為時鐘樹。STM32內(nèi)部也是由多種多樣的電路模塊組合在一起實現(xiàn)
    的頭像 發(fā)表于 12-30 21:01 ?2489次閱讀
    一千余字解讀<b class='flag-5'>stm32</b><b class='flag-5'>時鐘</b>樹

    用SPI來配置ADS7229芯片,用外部時鐘SCLK和內(nèi)部時鐘CCLK有區(qū)別嗎?

    頻率會減小一半使用 2.手冊中在說明配置內(nèi)部寄存器時,并沒有說什么腳電平如何拉低和拉高,所以想使用外部SPI提供的時鐘也沒辦法做到,在配置為內(nèi)部時鐘或外部
    發(fā)表于 12-23 07:58

    京準時鐘科普:關(guān)于北斗衛(wèi)星同步時鐘那些事?

    京準時鐘科普:關(guān)于北斗衛(wèi)星同步時鐘那些事?
    的頭像 發(fā)表于 10-29 09:28 ?582次閱讀
    京準<b class='flag-5'>時鐘</b>科普:<b class='flag-5'>關(guān)于</b>北斗衛(wèi)星同步<b class='flag-5'>時鐘</b>的<b class='flag-5'>那些</b>事?

    關(guān)于PCM1864時鐘配置問題求解

    我的板子上的時鐘源是24MHz的晶振。 1. 從pcm1864手冊上看到,reg32(0x20)寄存器配置時鐘源選擇,選擇XTAL作為時鐘源,主模式,clkdet enable,寫入
    發(fā)表于 10-29 06:42

    AT32講堂088 | 雅特力AT32F402/F405時鐘配置

    簡介時鐘是芯片正確高效運行的基礎(chǔ),正確的時鐘配置是芯片能正確運行的必要條件,其重要性不言而喻。AT32各系列產(chǎn)品的時鐘配置部分可能存在細微的
    的頭像 發(fā)表于 09-15 08:08 ?802次閱讀
    AT32講堂088 | 雅特力AT32F402/F405<b class='flag-5'>時鐘</b><b class='flag-5'>配置</b>

    音頻設(shè)備的PLL和時鐘配置應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《音頻設(shè)備的PLL和時鐘配置應(yīng)用說明.pdf》資料免費下載
    發(fā)表于 09-14 10:38 ?0次下載
    音頻設(shè)備的PLL和<b class='flag-5'>時鐘</b><b class='flag-5'>配置</b>應(yīng)用說明

    器件的時鐘配置和TAx5x1x系列的靈活時鐘

    電子發(fā)燒友網(wǎng)站提供《器件的時鐘配置和TAx5x1x系列的靈活時鐘.pdf》資料免費下載
    發(fā)表于 08-28 11:03 ?0次下載
    器件的<b class='flag-5'>時鐘</b><b class='flag-5'>配置</b>和TAx5x1x系列的靈活<b class='flag-5'>時鐘</b>

    stm32用串口燒錄怎么設(shè)置

    微控制器。 STM32CubeMX配置 打開STM32CubeMX,選擇您的STM32芯片型號。 配置您的微控制器的
    的頭像 發(fā)表于 08-22 09:33 ?2579次閱讀

    CKS32F107xx系列時鐘系統(tǒng)具體配置方法講解

    上一章節(jié)對CKS32F107xx系列時鐘做了整體介紹,本章節(jié)以使用HSI內(nèi)部高速時鐘為例對時鐘具體配置方法進行講解。
    的頭像 發(fā)表于 05-28 10:05 ?884次閱讀
    CKS32F107xx系列<b class='flag-5'>時鐘</b>系統(tǒng)具體<b class='flag-5'>配置</b>方法講解

    求助,關(guān)于STM32F1 USB庫Custom HID時鐘問題求解

    STM32F1 USB庫 V4.0 的版本的 Custom HID 為基礎(chǔ),用 HSI倍頻到48MHz,然后使能USB時鐘, 就變成8MHz了首先, SYSCLK已經(jīng)確認是正常的48MHz
    發(fā)表于 05-16 07:08

    關(guān)于STM32的32.768K時鐘晶振疑問求解

    樓主最近看到一些官方電路板的圖片,發(fā)現(xiàn)官方的電路板采用的都是4腳的32.768KHz時鐘晶振+8MHz的時鐘驅(qū)動方式。 同時聽到好多人說,STM32的F1系列如果使用普通的手表晶振會存在不起振
    發(fā)表于 05-16 06:46

    在進行靜電測試時,發(fā)現(xiàn)STM32的系統(tǒng)時鐘配置為SYSCLK_FREQ_HSE就不能通過實驗,為什么?

    在進行靜電測試時,發(fā)現(xiàn)STM32的系統(tǒng)時鐘配置為SYSCLK_FREQ_HSE就不能通過實驗。而使用其他系統(tǒng)時鐘配置都可以。00110 /*
    發(fā)表于 05-11 08:06
    主站蜘蛛池模板: 久久久97丨国产人妻熟女 | 久久综合老色鬼网站 | eussse手机电影在线观看 | 大学生第一次破苞疼哭了 | 久久精品亚洲精品国产欧美 | 末成年美女黄网站色大片连接 | 琪琪午夜福利免费院 | 欧美性情video sexo视频 | 新影音先锋男人色资源网 | 野草在线视频完整视频 | 亚洲乱码一区二区三区香蕉 | 国产h视频在线观看网站免费 | 久久伊人精品青青草原2021 | 99re6在线视频国产精品欧美 | 超碰在线线公开免费视频 | 亚洲欧美国产综合在线 | 丝袜足控免费网站xx91 | 免费人妻无码AV不卡在线 | 亚洲不卡一卡2卡三卡4卡5卡 | A片毛片免费视频在线看 | 99精产国品一二产区在线 | 97无码人妻精品1国产精东影业 | 好男人在线高清WWW免费观看 | FREE性丰满HD毛多多 | caoporn免费视频在线 | 久久精品视频3 | 日本无码免费久久久精品 | 亚洲黄视频在线观看 | 久久精品国产亚洲精品2020 | 国产精品色吧国产精品 | 国内视频在线精品一区 | 国产制服丝袜91在线 | 强奸日本美女小游戏 | 日韩欧美精品有码在线播放免费 | 精品伊人久久 | 蜜臀久久99精品久久久久久做爰 | 亚洲一区二区三区乱码在线欧洲 | 久久电影精品久久99久久 | 91青青草原| 国产福利视频在线观看福利 | 国产99视频精品一区 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品