1. 程式人生 > >STM32第二功能引腳對映

STM32第二功能引腳對映

STM32部分外設的第二功能引腳對映

作者:JCY

時間:20121211

STM32FST(意法半導體公司)的產品,本晶片的設計支援了晶片上部分外設第二功能的引腳對映。這為設計STM32的電路板提供了方面,大大簡化了電路的設計。當第一次看到AFIO功能的時候感到很困惑,一直不理解,但是最近突然明白了。不敢獨享,寫此文章與大家分享。本文章純屬個人的理解,如有任何的錯誤之處請指正,將不勝感激。

我們可以這樣理解,對於每一個GPIO來說,他只有普通IO口的功能,並沒有像CNAUARTSPITIMERI2CI2S、外部中斷等外設。那麼就不存在所謂第二功能了。假設現在我們在晶片上要加一個

UART1的外設,此UART沒有涉及到硬體流控制。所以該外設與外界的通訊只需要兩個引腳,即TXRX。但是我們要TXRX連線到那裡哪?無論是STC89C5251微控制器還是ATMEGA16AVR微控制器,他們都是將TXRX與某引腳直接共用,TXRX的引腳也只能在此引腳上,不肯能被改變的。但是STM32卻改變了普遍的半導體公司的一貫做法,使用了第二功能引腳的對映。我們以STM32晶片上的UART1為例來說明一下。預設的UART1的第二功能引腳TX1RX1分別在PA.9PA.10上。TX1RX1的引腳在PA.9PA.10並不是固定的,TX1RX1的第二功能引腳可以在PB.6PB.7
上,那麼PA.9PA.10只能使用它的普通IO功能了。

STM32中有一個暫存器叫AFIO_MAPR。它控制了第二功能的引腳在那個GPIO口上使用。現將該暫存器的內容貼上如下:

看到了bit2位了嗎?它控制了UART1通訊引腳TX1RX1對映到哪一個引腳上。

晶片手冊對該為的解釋如下:

如果你使用了UART0來進行串列埠的通訊。可以將晶片外部的TXRX引腳分別接在PA.9PA.10或者PB.6PB.7上。這都能夠實現。

當接在PB.6PB.7上時需要將USART1_REMAP為設定為1。這樣就OK了。