stm32 複用時鐘開啓情況

 

首先爲什麼要開啓時鐘?

答:因爲要對寄存器進行讀寫!而在STM32中對寄存器的讀寫都是要打開寄存器對應的時鐘纔可以的【就像人一樣,有了跳動的脈搏手臂纔能有能量才能進行各種動作】。

然後就什麼時候AFIO時鐘開啓(所有時鐘都是這樣)就清楚了:當需要對“AFIO時鐘管理的寄存器”進行讀寫時AFIO時鐘打開!當然不對“AFIO時鐘管理的寄存器”讀寫時也可以打開AFIO時鐘,此時只是白白增加能耗、寫無用代碼(白白浪費程序存儲器空間)而已!

接下來:跟AFIO相關的寄存器有哪些呢?

答:根據《STM32中文參考手冊_V10》有:事件控制寄存器(AFIO_EVCR)、複用重映射和調試I/O 配置寄存器(AFIO_MAPR)、外部中斷配置寄存器1(AFIO_EXTICR1)、外部中斷配置寄存器2(AFIO_EXTICR2)、外部中斷配置寄存器3(AFIO_EXTICR3)、外部中斷配置寄存器4(AFIO_EXTICR4)。

應用:在usart1串口通信沒有端口重映射時爲什麼不打開AFIO時鐘?PA9、PA10作爲通用I/O口也複用了,爲什麼不打開爲什麼不打開復用時鐘?

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

To optimize the number of peripheralsavailable for the 64-pin or the 100-pin or the 144-pin package, it ispossible to remap somealternate functions to some other pins. This is

achieved by software, by programming the AFremap and debug I/O configuration register(AFIO_MAPR) on page 159. In thiscase, the alternate functions are no longer mapped to

their original assignations.


可見AFIO就設計用來remapsome alternate functions to some other pins的,所以根本就沒有什麼“複用”之說,看來都是翻譯惹的禍!另外看一下I/O複用時的情況就更清楚了

[STM32中文參考手冊_V10》P109]:

可見,當設置“PA9爲GPIO_Mode_AF_PP(只是一個常數0x18)、PA10爲GPIO_Mode_IN_FLOATING(只是一個常數0x04)”時PA9、PA10就已經直接跟串口的相應寄存器連接上了,而串口的寄存器不需要AFIO時鐘、PA9/PA10也不許要AFIO時鐘,同時有沒有對AFIO相應的寄存器操作所以根本不用開啓AFIO時鐘!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章