一、GPIO入門知識url
GPIO是什麼?spa
GPIO全稱general purpose input output通用輸入輸出端口,GPIO口既能夠作輸入也能夠作輸出,這些都是經過配置GPIO的工做模式來實現的。.net
·STM32FXXXIGT6:一共有9組IO口:PA~PI(PI只有PI0~PI11);一共有140個IO口:16*8+12=140調試
STM32的大部分引腳都除了能夠看成GPIO口來使用,還能夠複用爲外設功能引腳,如串口等。blog
集體引腳複用功能查找對應的芯片數據手冊便可。get
二、GPIO的8種工做模式(GPIO_Mode)input
看IO口電路圖更容易理解it
·四種輸入模式io
輸入浮空 :外部輸入直接進入IDR寄存器,施密特觸發器打開入門
輸入上拉:外部輸入通過上拉進入IDR寄存器,施密特觸發器打開
輸入下拉:外部輸入通過下拉進入IDR寄存器,施密特觸發器打開
模擬輸入:模擬輸入時,施密特觸發器關閉,直接進入模擬通道
·四種輸出模式
開漏輸出(帶上拉或者下拉):只能夠輸出強低電平,高電平只能由外部上拉,適合作電流型驅動,吸取電流能力較強(通常20mA之內)
開漏複用功能(帶上拉或者下拉)
推輓輸出(帶上拉或者下拉):能夠輸出高低電平
推輓複用功能(帶上拉或者下拉)
·四種最大輸出速度F429
-2MHz 低速
-25MHz 中速
-50MHz 快速
-100MHz 高速
對於stm32來講,上電覆位後,GPIO默認爲輸入浮空狀態,部分特殊功能引腳爲特定狀態。
注意復位後,調試引腳處於複用功能上拉或是下拉狀態,不能直接看成IO口使用(PA15,PA14,PA13,PB4,PB3)
三、GPIO寄存器
通常而言M3,M4,M7每組都有十個寄存器,共9*10=90個寄存器
四個32位配置寄存器:
GPIOx_MODE------端口模式寄存器
GPIOx_OTYPER------端口輸出類型寄存器
GPIOx_OSPEEDR------端口輸出速度寄存器
GPIOx_PUPDR------端口上拉下拉寄存器
兩個32位數據寄存器:
GPIOx_IDR-------輸入數據寄存器
GPIOx_ODR-------輸出數據寄存器
一個32位置位/復位寄存器:GPIOx_BSRR
一個32位鎖存寄存器:GPIOx_LCKR
兩個32位複用功能寄存器:低位GPIOx_AFRL&高位GPIOx_AFRH