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

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

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

3天內不再提示

關于 STM32 時鐘配置的那些坑

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

今天分享以下兩點內容:

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

2.關于STM32的 I/O 復用功能及什么時候開啟AFIO時鐘;

1為什么我們要先開啟STM32外設時鐘

講述本節內容之前先說一個案例:

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

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

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

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

我想許多朋友都曾遇到過這種坑,我最初學習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

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

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】章節。

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

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

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

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

4.總結

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

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

坑:

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

B.時鐘配置需對應總線

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

2關于STM32的I/O復用功能及什么時候開啟AFIO時鐘

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

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

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

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

2.什么時候開啟AFIO時鐘

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

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

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

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

推薦閱讀:

1.STM32標準外設庫SPL轉換成Cube LL

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

5最后

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

長按識別圖中二維碼關注

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

原文標題:關于STM32時鐘配置的那些坑

文章出處:【微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

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

    關注

    134

    文章

    9084

    瀏覽量

    367382
  • STM32
    +關注

    關注

    2270

    文章

    10895

    瀏覽量

    355729
  • Atmel
    +關注

    關注

    17

    文章

    311

    瀏覽量

    107281
  • AMBA
    +關注

    關注

    0

    文章

    68

    瀏覽量

    14980
  • AFIO
    +關注

    關注

    0

    文章

    6

    瀏覽量

    2946
收藏 人收藏

    評論

    相關推薦

    STM32F103×8/STM32F103×B MCU手冊

    1. Q: STM32F103C8T6如何正確配置時鐘系統?A: STM32F103C8T6的時鐘系統
    發表于 11-18 15:14 ?0次下載

    京準時鐘科普:關于北斗衛星同步時鐘那些事?

    京準時鐘科普:關于北斗衛星同步時鐘那些事?
    的頭像 發表于 10-29 09:28 ?276次閱讀
    京準<b class='flag-5'>時鐘</b>科普:<b class='flag-5'>關于</b>北斗衛星同步<b class='flag-5'>時鐘</b>的<b class='flag-5'>那些</b>事?

    關于PCM1864時鐘配置問題求解

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

    音頻設備的PLL和時鐘配置應用說明

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

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

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

    stm32用串口燒錄怎么設置

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

    STM32F407系列使用HSI時鐘后,PLL最高能配置到多少?

    。我用STM32CubeMX可以配置到168Mhz,但是實際是在并不能將PLL配置成功,最后得到的時鐘是使用的HSI,16Mhz。大家有沒有關于
    發表于 04-26 07:49

    使用CubeMX配置STM32F407VGT6的SPI DMA發送16位數據,時鐘有波形的原因?

    使用CubeMX配置STM32F407VGT6的SPI DMA發送16位數據,時鐘有波形,MOSI無數據,上電就是高電平,其他CLK有波形的時候也還是高電平,發送的數據是0x0001和0x0000
    發表于 03-28 07:40

    stm32f100用庫3.5如何讓配置系統時鐘,8MHz晶振輸入,如何配置為24MHz系統時鐘

    請問,stm32f100用庫3.5如何讓配置系統時鐘,8MHz晶振輸入,如何配置為24MHz系統時鐘?學習
    發表于 03-26 06:55

    STM32CubeMX 6.5.0時鐘配置頁面的ADC時鐘源無法配置怎么解決?

    最新版STM32CubeMX 6.5.0,啟動ADC功能后,時鐘配置頁面的ADC時鐘源仍無法配置STM
    發表于 03-25 07:04

    關于STM32F107時鐘配置的問題求解

    圖1:72M 配置 圖2:45M 配置 通過 MCOPA8 觀察,PLL時鐘/2; 圖1代碼,PLL 輸出是 72M(PA8示波器顯示36M左右);這個沒問題; 圖2代碼,理論上 PLL 頻率
    發表于 03-13 06:10

    關于STM32L476 DFSDM時鐘配置的疑問求解

    stm32l4 配置DFSDM 時鐘只能來之 DFSDM_CHANNEL_OUTPUT_CLOCK_SYSTEM不能來自DFSDM_CHANNEL_OUTPUT_CLOCK_AUDIO cubemx 6.10.0
    發表于 03-08 06:26

    雅特力AT32F423時鐘配置

    簡介時鐘是芯片正確高效運行的基礎,正確的時鐘配置是芯片能正確運行的必要條件,其重要性不言而喻。AT32各系列產品的時鐘配置部分可能存在細微的
    的頭像 發表于 02-19 13:26 ?585次閱讀
    雅特力AT32F423<b class='flag-5'>時鐘</b><b class='flag-5'>配置</b>

    如何生成關于時鐘同步功能的DTC?

    如何生成關于時鐘同步功能的DTC? 時鐘同步功能是指在一個系統內的多個時鐘源進行同步,確保它們的時間保持一致。這在許多實時系統中都非常重要,特別是在需要多個設備或組件協同工作的場景中。
    的頭像 發表于 01-16 15:10 ?604次閱讀

    stm32使用AD5762配置程序

    如何使用STM32配置AD5762。 首先,我們需要確保STM32的開發環境已經搭建好,并且熟悉STM32的編程方式。接下來,我們將按照以下步驟來
    的頭像 發表于 01-09 11:10 ?702次閱讀
    主站蜘蛛池模板: 国产精品人成视频免费999| 丰满少妇69激情啪啪无码| 日本理伦片午夜理伦片| 牢记永久免费网址| 久久99视频免费| 国产精品一区二区激情| 国产精品自在在线午夜精品| 伊人情涩网| 肉蒲团从国内封禁到日本成经典| 国产毛片AV久久久久精品| 办公室激情在线观看| 钉钉女老师| 欧美巨大xxxx做受高清| 一本道高清码v京东热| 欧美一区二区三区男同| 亚洲AV美女成人网站P站| 999精品影视在线观看| 国产亚洲精品久久久久久白晶晶 | 国产在线高清视频| 男人的天堂黄色片| 亚洲精品无码不卡在线播HE| YELLOW日本动漫高清免费| 精品国产国产综合精品| 年轻夫妇韩剧中文版免费观看 | 武侠艳妇屈辱的张开双腿| 四虎亚洲中文字幕永久在线| 双性h浪荡受bl| 亚洲国产精品一区二区久久第| 亚洲AV无码专区国产精品99| 学校女性奴sm训练调教| 亚洲一区二区三区高清网| 一区视频免费观看| 原神美女被超污app| 99久在线国内在线播放免费观看 | 皮皮在线精品亚洲| 秋霞电影午夜伦午夜| 日本熟妇乱妇熟色A片蜜桃亚洲| 日日天干夜夜狠狠爱| 无限资源在线完整高清观看1 | 亚欧日韩毛片在线看免费网站| 玩弄人妻少妇500系列网址|