stm32 復(fù)用時(shí)鐘開啟情況
首先為什么要開啟時(shí)鐘?
答:因?yàn)橐獙拇嫫鬟M(jìn)行讀寫!而在STM32中對寄存器的讀寫都是要打開寄存器對應(yīng)的時(shí)鐘才可以的【就像人一樣,有了跳動(dòng)的脈搏手臂才能有能量才能進(jìn)行各種動(dòng)作】。
然后就什么時(shí)候AFIO時(shí)鐘開啟(所有時(shí)鐘都是這樣)就清楚了:當(dāng)需要對“AFIO時(shí)鐘管理的寄存器”進(jìn)行讀寫時(shí)AFIO時(shí)鐘打開!當(dāng)然不對“AFIO時(shí)鐘管理的寄存器”讀寫時(shí)也可以打開AFIO時(shí)鐘,此時(shí)只是白白增加能耗、寫無用代碼(白白浪費(fèi)程序存儲器空間)而已!
接下來:跟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串口通信沒有端口重映射時(shí)為什么不打開AFIO時(shí)鐘?PA9、PA10作為通用I/O口也復(fù)用了,為什么不打開為什么不打開復(fù)用時(shí)鐘?
答: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-pinpackage, it ispossible to remapsomealternate 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就設(shè)計(jì)用來remapsome alternate functions to some other pins的,所以根本就沒有什么“復(fù)用”之說,看來都是翻譯惹的禍!另外看一下I/O復(fù)用時(shí)的情況就更清楚了
[STM32中文參考手冊_V10》P109]:
可見,當(dāng)設(shè)置“PA9為GPIO_Mode_AF_PP(只是一個(gè)常數(shù)0x18)、PA10為GPIO_Mode_IN_FLOATING(只是一個(gè)常數(shù)0x04)”時(shí)PA9、PA10就已經(jīng)直接跟串口的相應(yīng)寄存器連接上了,而串口的寄存器不需要AFIO時(shí)鐘、PA9/PA10也不許要AFIO時(shí)鐘,同時(shí)有沒有對AFIO相應(yīng)的寄存器操作所以根本不用開啟AFIO時(shí)鐘!