一、端口復用
端口復用和重映射都是和單片機的I/O口有關(guān)系,端口復用是將一個I/O賦予多個功能,通過設(shè)置I/O的工作模式來切換不同的功能。重映射是將某些I/O口上面的功能映射到其他I/O口上面去。但是注意一點:重映射的I/O都是廠家設(shè)置好的,不能自己更改。
端口復用
什么是端口復用?
STM32有很多的內(nèi)置外設(shè),這些外設(shè)的外部引腳都是與GPIO復用的。也就是說,一-個GPIO如果可以復用為內(nèi)置外設(shè)的功能引腳,那么當這個GPIO作為內(nèi)置外設(shè)使用的時候,就叫做復用。
也就是這些黃色底板下,對于引腳的文字,就是能復用的功能
二、STM32F4的端口復用映射原理
- STM32F4系列微控制器IO引腳通過一一個 復用器連接到內(nèi)置外設(shè)或模塊。該復用器一次只允許一個外設(shè)的復用功能(AF)連接到對應(yīng)的I0口。這樣可以確保共用同一-個IO引腳的外設(shè)之間不會發(fā)生沖突。
- 每個IO引腳都有一個復用器,該復用器采用16路復用功能輸入(AFO到AF15),可通過GPIOx_ AFRL(針對引腳0-7)和GPIOx_ AFRH (針對引腳8-15)寄存器對這些輸入進行配置,每四位控制一路復用。
端口復用映射示意圖
如果是中斷3-5,則是AF2
一組GPIO有16個IO,如PA0 - PA15
,一組中有兩個復用功能寄存器AFRL
(32位)和AFRH
(32位),一個IO要四位,所以AFRL
控制0 - 7
,AFRH
控制8 - 15
舉例:如果我要控制PA2為串口2
就是在PFRL2上定義0111
三、復用功能映射設(shè)置
文章來源:http://www.zghlxwxcb.cn/news/detail-600182.html
四、端口復用配置過程
文章來源地址http://www.zghlxwxcb.cn/news/detail-600182.html
#define IS_GPIO_AF(AF) (((AF) == GPIO_AF_RTC_50Hz) || ((AF) == GPIO_AF_TIM14) || \
((AF) == GPIO_AF_MCO) || ((AF) == GPIO_AF_TAMPER) || \
((AF) == GPIO_AF_SWJ) || ((AF) == GPIO_AF_TRACE) || \
((AF) == GPIO_AF_TIM1) || ((AF) == GPIO_AF_TIM2) || \
((AF) == GPIO_AF_TIM3) || ((AF) == GPIO_AF_TIM4) || \
((AF) == GPIO_AF_TIM5) || ((AF) == GPIO_AF_TIM8) || \
((AF) == GPIO_AF_I2C1) || ((AF) == GPIO_AF_I2C2) || \
((AF) == GPIO_AF_I2C3) || ((AF) == GPIO_AF_SPI1) || \
((AF) == GPIO_AF_SPI2) || ((AF) == GPIO_AF_TIM13) || \
((AF) == GPIO_AF_SPI3) || ((AF) == GPIO_AF_TIM14) || \
((AF) == GPIO_AF_USART1) || ((AF) == GPIO_AF_USART2) || \
((AF) == GPIO_AF_USART3) || ((AF) == GPIO_AF_UART4) || \
((AF) == GPIO_AF_UART5) || ((AF) == GPIO_AF_USART6) || \
((AF) == GPIO_AF_CAN1) || ((AF) == GPIO_AF_CAN2) || \
((AF) == GPIO_AF_OTG_FS) || ((AF) == GPIO_AF_OTG_HS) || \
((AF) == GPIO_AF_ETH) || ((AF) == GPIO_AF_OTG_HS_FS) || \
((AF) == GPIO_AF_SDIO) || ((AF) == GPIO_AF_DCMI) || \
((AF) == GPIO_AF_EVENTOUT) || ((AF) == GPIO_AF_FSMC))
到了這里,關(guān)于stm32f407探索者開發(fā)板(十四)——IO引腳復用和映射的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!