STM32F407 IO引腳復用器和映射 個人筆記


基本概念

  1. stm32有一些內置外設,每個外設有一個復用功能AF(Alternate functions).
  2. stm32的每個io引腳東路有一個16路復用器,該復用器一端連該引腳,另外16端連AF0~AF15
  3. 該復用器可以通過GPIOx_AFRL(針對該組引腳的 0-7號引腳)和 GPIOx_AFRH(針對引腳 8-15)寄存器來配置,即選擇哪個AF連接該io引腳

如何知道每個io口復用了哪些AF

並不是每一個io口都能任意選擇所有AF, 由示意圖也可以知道,AF1可能是兩個TIM1或TIM2,AF3可能是TIM8~TIM11,顯然每個io口每次只能復用一個外設
那如何知道每個io口復用了哪些AF呢?
方法一:.在芯片資料中的《STM32F407ZGT6.pdf》(datasheet)中,找到table 6. pin and ball definitions ,里面由一欄就是AF

方法二:在原理圖《Explorer STM32F4_V2.2_SCH.pdf》中,第二頁MCU中可以看到,每個引腳里面寫的就是其復用的AF:

軟件控制復用器選擇哪個AF

一組IO口的高、低八位分別由GPIOx_AFRHGPIOx_AFRL寄存器控制。
下圖對應GPIOx_AFRL (低8位)
可以看到每個io引腳占用4位,這4位選擇一個AF來復用

端口復用為復用功能的配置過程:

1.GPIO&復用外設的時鍾使能

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA時鍾
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能USART1時鍾

2.通過GPIO_PinAFConfig()函數,配置GPIOx_AFRHGPIOx_AFRL寄存器,控制鎖存器,將io口和外設相連
···
//串口1對應引腳復用映射
GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //GPIOA9復用為USART1
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //GPIOA10復用為USART1
···
3.GPIO_Init()
除了復用ADC和DAC這兩個外設時的mode選模擬輸入外,其余外設的mode全部選AF

4.對應外設初始化


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM