【STM】GPIO工作原理及寄存器、5V容忍


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容忍

  

 

 


免責聲明!

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



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