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

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

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

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

汽車玩家 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2020-04-04 17:22 ? 次閱讀

STM32的AFIO時鐘真的是在開啟引腳復(fù)用功能的時候開啟嗎?其實并不是~

什么是復(fù)用?

我們知道,STM32有很多外設(shè),這些外設(shè)的外部引腳都是與GPIO共用的。我們可以通過軟件來配置引腳作為GPIO引腳還是作為外設(shè)引腳。當(dāng)引腳配置為外設(shè)引腳時就叫做復(fù)用。如串口默認(rèn)復(fù)用的引腳為:

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

PA9、PA10引腳可配置為普通IO,也可配置為串口引腳(PA9為TX,PA10為RX)。

例子:串口1為例

關(guān)于外設(shè)的配置可查閱:《STM32參考手冊》關(guān)于通用和復(fù)用功能I/O(GPIO和AFIO) 的章節(jié),如串口引腳配置如下:

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

我們可能經(jīng)??吹揭恍┐a(基于STM32F103ZET6)的串口配置如下:

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

看到這里開啟了AFIO時鐘,讓我疑惑了一下,為什么SPI相關(guān)的引腳也配置為復(fù)用但并沒有開啟APIO時鐘也能正常工作。所以AFIO時鐘應(yīng)該什么時候開呢?

我們回顧一下,我們?yōu)槭裁匆_啟時鐘呢?因為我們要對芯片內(nèi)部的硬件進(jìn)行控制(讀寫其寄存器),要控制哪一部分,就要開啟那一部分的時鐘。

本例中,使能GPIOA、USART1的時鐘是因為我們要對GPIOA、USART1相關(guān)的寄存器進(jìn)行操作。那么AFIO呢?其管理的寄存器有哪些呢?從參考手冊關(guān)于通用和復(fù)用功能I/O(GPIO和AFIO)這一章節(jié)可以看到AFIO管理的寄存器如下:

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

可以知道,本例對USART1進(jìn)行配置,并沒有涉及到AFIO相關(guān)的寄存器,所以并不需要打開AFIO時鐘!

所以這里的第7行代碼可以刪掉。當(dāng)然不刪也可以正常工作,但是會白白增加能耗、寫無用代碼(白白浪費程序存儲器空間)而已!

何時開啟AFIO時鐘?

按照上面分析的,當(dāng)然是要操作AFIO相關(guān)的寄存器的時候才開啟AFIO時鐘。此處依舊以串口為例。我們看到AFIO管理的寄存器中有復(fù)用重映射和調(diào)試I/O配置寄存器(AFIO_MAPR) 這一寄存器,這個寄存器怎么用呢?

首先,我們要知道什么是重映射。

使用重映射功能可以把一些復(fù)用功能重新映射到其他引腳上,在某些時候可以方便板級硬件的布局設(shè)計。設(shè)置AFIO_MAPR寄存器實現(xiàn)引腳的重新映射。此時,復(fù)用功能不再映射到它們的原始分配上。 可以重映射到任意引腳嗎?其實是有規(guī)定的,可查閱參考手冊,如串口1的重映射:

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

我們可以配置PB6、PB7作為串口1的TX、RX引腳,具體配置代碼如下:

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

這里得調(diào)用一個重映射配置函數(shù)GPIO_PinRemapConfig,可在這個函數(shù)在stm32f10x_gpio.c中,如下:

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

其中第一個參數(shù)為要重映射的外設(shè),可在stm32f10x_gpio.h中查看:

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

其中重映射又分為部分重映射和完全重映射,區(qū)別就是要重映射全部的引腳還是部分引腳,這也是有規(guī)定的。比如定時器1:

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

我們從GPIO_PinRemapConfig函數(shù)的實現(xiàn)中可以看到我們需要操控AFIO_MAPR寄存器,所以需要開啟AFIO時鐘。

綜上,需要操控AFIO管理的寄存器才需開啟AFIO時鐘,否則不需要開啟。

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

    關(guān)注

    2264

    文章

    10858

    瀏覽量

    354391
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1540

    瀏覽量

    76080
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1189

    瀏覽量

    51847
收藏 人收藏

    評論

    相關(guān)推薦

    求助,為什么STM32要設(shè)置時鐘開關(guān)?

    STM32在使用時離不開時鐘,在做絕大部分操作之前,除了要先進(jìn)行相應(yīng)的配置之外,關(guān)鍵還要開啟時鐘,否則就什么事都做不了。既然如此,為什么設(shè)計
    發(fā)表于 04-23 06:05

    stm32定時器在初始化參數(shù)之前是否必須開啟對應(yīng)時鐘?

    參數(shù)的時候,對應(yīng)定時器時鐘并沒有開啟,導(dǎo)致PWM不能正常輸出,當(dāng)在這些函數(shù)之前,開啟對應(yīng)時鐘,就正常了。看是調(diào)試對比,TIM的寄存器沒有差別,不知道為什么,所以問一下在初始化參數(shù)之前是
    發(fā)表于 04-18 06:42

    STM32F410端口復(fù)用SPI5,引腳電平很低的原因?

    STM32F410復(fù)用為硬件SPI5口,做DMA輸入,不需要輸出,如果用軟件模擬的SPI口沒有問題,電平是正常的3.3v,如果復(fù)用成硬件SPI5口,不論是時鐘還是數(shù)據(jù)線上的電平都非常低
    發(fā)表于 04-12 07:29

    請問STM32f103使用PB14做外部中斷為什么要開啟復(fù)用時鐘才能用?

    如題,我其他中斷不開啟用時鐘也可以用,這是為啥?有大佬能解個惑嗎?
    發(fā)表于 04-11 07:22

    如何減少STM32F103 ADC采集時間?

    路ADC采集,采用時間為7.5周期,測試出來每通道采樣時間居然為10ms,當(dāng)采用時間為239.5周期時,采樣時間高達(dá)134ms。換了另一塊板也一樣。
    發(fā)表于 04-10 08:20

    有關(guān)stm32f103端口復(fù)用的幾個問題求解

    在學(xué)習(xí)GPIO時,遇到到端口復(fù)用問題一直不能明白,我舉個例子: PB6 PB7默認(rèn)情況下是做普通IO使用的,當(dāng)我想用I2C1是,我開啟RCC_APB1PeriphClockCmd
    發(fā)表于 04-07 07:32

    STM32L051同時開啟RTC時間戳和秒喚醒后,使用GPIO引腳無法觸發(fā)時間戳中斷如何解決?

    STM32L051同時開啟RTC時間戳和秒喚醒后,使用GPIO引腳無法觸發(fā)時間戳中斷。但使用一個3.3V的電源接到PC13能夠觸發(fā)RTC時間
    發(fā)表于 04-01 06:37

    使用STM32H743-ADC設(shè)置PLL2為時鐘源為什么開啟不了?

    ,發(fā)現(xiàn)能采集到數(shù)據(jù): 然后下載到同樣為STM32H743IIT6的另外一個開發(fā)版時卻發(fā)現(xiàn)采集到的數(shù)據(jù)為0。這是為什么呀? 這個開發(fā)板也類似最小核心開發(fā)板了,可是我卻開啟不了PLL2作為它的ADC時鐘
    發(fā)表于 03-12 08:30

    CDCV304 200 MHz通用時鐘緩沖器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《CDCV304 200 MHz通用時鐘緩沖器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 02-28 13:55 ?0次下載
    CDCV304 200 MHz通<b class='flag-5'>用時鐘</b>緩沖器數(shù)據(jù)表

    STM32定時器時間計算方法

    STM32微控制器的定時器模塊在嵌入式系統(tǒng)中非常常見,它被用于產(chǎn)生精確的時間延遲,或者用于實時時鐘(RTC)等功能。為了充分利用STM32的定時器功能,理解其
    的頭像 發(fā)表于 12-19 11:31 ?1.1w次閱讀

    無人機(jī)電池使用時間變短的原因

    電池使用時間變短了,這是很多無人機(jī)使用者都會遇到的問題,可電池使用時間變短的具體原因都有哪些?
    的頭像 發(fā)表于 12-08 16:28 ?987次閱讀

    用時間開關(guān)電路原理圖講解

    用時間開關(guān): 該電路旨在滿足經(jīng)濟(jì)高效且簡單的定時器的標(biāo)準(zhǔn)。它的計時范圍從不到一秒到幾十小時,并利用基于晶閘管的電源接口來控制感性負(fù)載。
    的頭像 發(fā)表于 12-04 18:24 ?1780次閱讀
    通<b class='flag-5'>用時間</b>開關(guān)電路原理圖講解

    【RA系列】用時鐘頻率精度測量電路進(jìn)行時間校驗

    【RA系列】用時鐘頻率精度測量電路進(jìn)行時間校驗
    的頭像 發(fā)表于 11-25 08:06 ?540次閱讀
    【RA系列】<b class='flag-5'>用時鐘</b>頻率精度測量電路進(jìn)行<b class='flag-5'>時間</b>校驗

    利用STM32CubeMX解讀時鐘

    提供給芯片中的RTC(實時時鐘)及IWDG(獨立看門狗)使用。2,中速時鐘MSIRC是“中速內(nèi)部時鐘”或“中速內(nèi)部振蕩器”,是STM32L系列獨有的
    的頭像 發(fā)表于 11-24 08:00 ?1089次閱讀
    利用<b class='flag-5'>STM32</b>CubeMX解讀<b class='flag-5'>時鐘</b>樹

    延遲電池使用時間的設(shè)計考慮

    電子發(fā)燒友網(wǎng)站提供《延遲電池使用時間的設(shè)計考慮.doc》資料免費下載
    發(fā)表于 11-14 09:57 ?1次下載
    延遲電池使<b class='flag-5'>用時間</b>的設(shè)計考慮