STM32端口複用 & 端口重映射

端口複用功能
STM32有很多的內部外設,這些外設的外部引腳都是與GPIO複用的。也就是說,一個GPIO如果可以複用爲內部外設的功能引腳,那麼當這個GPIO作爲內部外設使用的時候,就叫做複用。
譬如,MCU都有串口,STM32有好幾個串口。比如說STM32F103ZET6有5個串口,我們可以查手冊知道,串口1的引腳對應的IO位PA9和PA10. PA9和PA10默認功能是GPIO,所以當PA9和PA10引腳作爲串口1的TX和RX引腳使用的時候,那就是端口複用。

複用端口初始化有3個步驟:①GPIO端口時鐘使能。②複用的外設時鐘使能。③端口模式配置。

所以,我們在使用複用功能的時候,最少要使能2個時鐘:
①GPIO時鐘使能
②複用的外設時鐘使能
同時要初始化GPIO以及複用外設功能。
端口重映射
爲了使不同器件封裝的外設IO功能數量達到最優,可以把一些複用功能重新映射到其他一些引腳上。STM32中有很多內部外設的輸入輸出引腳都具有重映射的功能(remap)。我們知道每個內部外設都有若干個輸入輸出引腳,一般這些引腳的輸出端口都是固定不變的,爲了讓設計工程師可以更好地安排引腳的走向和功能,在STM32中引入了外設引腳重映射的概念,即一個外設的引腳除了具有默認的端口外,還可以通過設置重映射寄存器的方式,把這個外設的引腳映射到其他的端口。簡單的講就是把管腳的外設功能映射到另一個管腳,但不是可以隨便映射的。譬如,串口1:

使用重映射功能的4個步驟:
①使能GPIO時鐘
②使能串口1時鐘
③使能AFIO時鐘
④開啓重映射
這樣就將串口的TX和RX重映射到管腳PB6和PB7上面了。至於有哪些功能可以重映射,大家除了查看中文參考手冊之外,還可以從GPIO_PinRemapConfig函數入手查看第一個入口參數的取值範圍可以得知。在stm32f10x_gpio.h文件中定義了取值範圍爲下面宏定義的標識符,這裏我們貼一小部分:

從上面可以看出,USART1只有一種重映射,而對於USART3存在部分重映射完全重映射。所謂部分重映射就是部分管腳和默認的是一樣的,而部分管腳是重新映射到其他管腳。而完全重映射就是所有管腳都重新映射到其他管腳。譬如USART3重映射:

部分重映射就是PB10,PB11,PB12重映射到PC10,PC11,PC12上。而PB13和PB14和沒有重映射情況是一樣的,都是USART3_CTS和USART3_RTS對應管腳。完全重映射就是將這兩個腳重新映射到PD11和PD12上去。我們使用USART3的部分重映射,調用函數方法爲:
GPIO_PinRemapConfig(GPIO_PartialRemap_USART3,ENABLE);

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