STM32的AFIO時鐘什么時候開啟?

問題描述


在使用STM32的USART2時發(fā)現(xiàn)AFIO時鐘無論打不打開串口都能正常工作


帶著這個問題網(wǎng)上搜集了一些資料,由于我對這塊的理解并不是很深,如果有錯誤歡迎指正

首先為什么要開啟時鐘?

答:因為STM32幾乎所有的外設(shè)都有獨立的時鐘,這也就是我們對相應(yīng)的寄存器進行操作時要打開對應(yīng)時鐘的原因。
然后就什么時候AFIO時鐘開啟(所有時鐘都是這樣)就清楚了:當(dāng)需要對“AFIO時鐘管理的寄存器”進行讀寫時AFIO時鐘打開!當(dāng)然不對“AFIO時鐘管理的寄存器”讀寫時也可以打開AFIO時鐘,此時只是白白增加能耗、寫無用代碼(白白浪費程序存儲器空間)而已!

接下來:跟AFIO相關(guān)的寄存器有哪些呢?

答:根據(jù)《STM32中文參考手冊_V10》有:①事件控制寄存器(AFIO_EVCR)、②復(fù)用重映射和調(diào)試I/O 配置寄存器(AFIO_MAPR)、③外部中斷配置寄存器1(AFIO_EXTICR1)、④外部中斷配置寄存器2(AFIO_EXTICR2)、⑤外部中斷配置寄存器3(AFIO_EXTICR3)、⑥外部中斷配置寄存器4(AFIO_EXTICR4)。

應(yīng)用:在usart1串口通信沒有端口重映射時為什么不打開AFIO時鐘?PA9、PA10作為通用I/O口也復(fù)用了,為什么不打開為什么不打開復(fù)用時鐘?

答:AFIO全稱:Alternate function I/O alternate備用的、替代的、交替的,所以AFIO可翻譯為“備用功能I/O”,原英文手冊上解釋很清楚:[《STM32英文手冊》P152]

To optimize the number of peripherals available for the 64-pin or the 100-pin or the 144-pin package, it is possible to remap some alternate functions to some other pins. This is achieved by software, by programming the AF remap and debug I/O configuration register(AFIO_MAPR) on page 159. In this case, the alternate functions are no longer mapped to their original assignations.

可見AFIO就設(shè)計用來remap some alternate functions to some other pins的,所以根本就沒有什么“復(fù)用”之說。

當(dāng)我們需要配置這些 AFIO 寄存器(只有當(dāng)我們用到重映射、事件寄存器、配置寄存器、外部中斷時)的時候,就需要打開 RCC_APB2ENR 寄存器的 AFIO 時鐘,而不是用到引腳復(fù)用功能的時候打開。

下面給出幾個關(guān)于這個問題不錯的文章:
STM32之AFIO
STM32的AFIO時鐘什么時候需要開啟
如何理解STM32引腳中的GPIO,AFIO時鐘分配策略和管腳復(fù)用
STM32F103:什么時候需要復(fù)用IO(AFIO)?
GPIO USART1 AFIO等疑問

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容