STM32的GPIO的複用功能和重對映功能
1、複用功能:內建外設是與I/O口共用引出管腳(不同的功能對應同一管腳)
STM32 所有內建外設的外部引腳都是與標準GPIO引腳複用的,如果有多個複用功能模組對應同一個引腳,只能使能其中之一,其它模組保持非使能狀態。
2、重對映功能:複用功能的引出腳可以通過重對映,從不同的I/O管腳引出,即複用功能的引出腳位是可通過程式改變到其他的引腳上!
直接好處:PCB電路板的設計人員可以在需要的情況下,不必把某些訊號在板上繞一大圈完成聯接,方便了PCB的設計同時潛在地減少了訊號的交叉干擾。
如:USART1: 0: 沒有重映像(TX/PA9,RX/PA10); 1: 重映像(TX/PB6,RX/PB7)。
(參考AFIO_MAPR暫存器介紹)[0,1為一暫存器的bit值]
【注】 下述複用功能的引出腳具有重對映功能:
- 晶體振盪器的引腳在不接晶體時,可以作為普通I/O口
- CAN模組; - JTAG除錯介面;- 大部分定時器的引出介面; - 大部分USART引出介面
- I2C1的引出介面; - SPI1的引出介面;
舉例:
對於STM32F103VBT6,47引腳為PB10,它的複用功能是I2C2_SCL和 USART3_TX,表示在上電之後它的預設功能為PB10,而I2C2的SCL和USART3的TX為它的複用功能;另外在TIM2的引腳重對映後,TIM2_CH3也成為這個引腳的複用功能。
(1)要使用STM32F103VBT6的47、48腳的USART3功能,則需要配置47腳為 複用推輓輸出 或 複用開漏輸出 ,配置48腳為某種輸入模式,同時使能USART3並保持I2C2的非使能狀態。
(2)使用STM32F103VBT6的47腳作為TIM2_CH3,則需要對TIM2進行重對映,然後再按複用功能的方式配置對應引腳.
要使用某個引腳的複用功能時,在開啟了對應引腳的GPIO時鐘和功能模組時鐘的前提下,需要作如下配置: 1)在配置該引腳的GPIO時,選擇推輓複用輸出(AF_PP)或開漏複用輸出(AF_OD) 2)使能對應功能的模組 3)不要使能不用的功能的模組
以下為參考手冊中內容:
8.1.4 複用功能(AF)
使用預設複用功能前必須對埠位配置暫存器程式設計。
● 對於複用的輸入功能,埠必須配置成輸入模式(浮空、上拉或下拉)且輸入引腳必須由外部驅動。
● 對於複用輸出功能,埠必須配置成複用功能輸出模式(推輓或開漏)。
● 對於雙向複用功能,埠位必須配置複用功能輸出模式(推輓或開漏)。這時,輸入驅動器被配置成浮空輸入模式。
如果把埠配置成複用輸出功能,則引腳和輸出暫存器斷開,並和片上外設的輸出訊號連線。
如果軟體把一個GPIO腳配置成複用輸出功能,但是外設沒有被啟用,它的輸出將不確定。