GPIO工作方式:
4種輸入模式:
輸入浮空:一般多用於外部按鍵輸入,此狀態下IO口的電平狀態完全由外部輸入決定,常用作KEY識別
輸入上拉:將不確定的信號通過一個電阻嵌位在高電平,電阻同時起限流作用
輸入下拉:將不確定的信號通過一個電阻嵌位在低電平,電阻同時起限流作用
模擬輸入:輸入為模擬量,用於ADC模擬輸入或低功耗下省電
4種輸出模式:
開漏輸出:IO口為0輸出強低電平,IO口為1時需要通過外部電阻拉高,輸出端相當於三極管的集電極,要得到高電平狀態需要上拉電阻才行
適合做電流型驅動,吸收電流能力相對較強(20mA以內)
IO口狀態由上拉電阻拉高電平,但可由外部電路改為低電平或不變,可以讀IO口輸入電平變化
推挽輸出:可以輸出強高低電平,連接數字器件
讀輸入值時未知
開漏復用:片內外設功能(TX1,MOSI,MISO,SCK,SS)
推挽復用:片內外設功能(I2C的SCL,SDA)
4種最大輸出速度:2MHZ
配置寄存器:
7組IO口(GPIOA-GPIOG),每組有16個IO(GPIOA.0-GPIOA.15),每組IO口含有下邊10個寄存器,控制16個IO口
端口模式寄存器(GPIOx_MODER):每IO口兩位
1 MODERy[1:0]:(y=0...15) 2 00:輸入(復位狀態) 3 01:通用輸出模式 4 10:復用功能模式 5 11:模擬模式
端口輸出類型寄存器(GPIOx_OTYPER):每IO口一位,高16位不用
1 OTy[1:0]:(y=0...15) 2 0:輸出推挽(復位狀態) 3 1:輸出開漏
端口輸出速度寄存器(GPIOx_OSPEEDR):每IO口兩位
1 OSPEEDRy[1:0]:(y=0...15) 2 00:2MHz 3 01:25MHz 4 10:50MHz 5 11:100MHz
端口上拉下拉寄存器(GPIOx_PUPDR):
1 PUPDRy[1:0]:(y=0...15) 2 00:無上拉或下拉 3 01:上拉 4 10:下拉 5 11:保留
端口輸入數據寄存器(GPIOx_IDR):
1 IDRy[15:0]:(y=0...15) 2 端口輸入數據
端口輸出數據寄存器(GPIOx_ODR):
1 ODRy[15:0]:(y=0...15) 2 端口輸出數據
端口置位復位寄存器(GPIOx_BSRR):
1 BRy[15:0]:位31:16 2 0:不會對相應的ODRx位執行任何操作 3 1:對相應的ODRx位進行復位 4 5 BSy[15:0]:位15:0 6 0:不會對相應的ODRx位執行任何操作 7 1:對相應的ODRx位進行置位 8 同時對BSx和BRx置位,則BSx的優先級更高
端口配置鎖存寄存器(GPIOx_LCKR):
兩個復位功能寄存器(GPIOx_AFRL & GPIOx_AFRH):
引腳復用:
通過芯片資料中的pin and ball definitions查看,將普通IO口復用為外設引腳
5V容忍:
STM32的引腳一般接的電壓是3.3V的,但有些管腳允許接入5V電壓,通過pin and ball definitions中的I/O structure查看,如果顯示FT就是可以容忍5V,未標識FT則代表不支持5V容忍