STM32 GPIO是通用輸入/輸出端口的英文簡稱,其可實現輸入、輸出、驅動、通信等功能,STM32的I/O 端口有8種模式(4種輸入模式和4種輸出模式),每個 I/O 端口位支持3種最大翻轉速度(2MHz、10MHz、50MHz),均可自由編程,但I/O 端口寄存器必須按 32 位字、半字(16位)或字節(8位)進行訪問,具體模式如下所示: 浮空輸入 上拉輸入 下拉輸入 模擬輸入 推挽輸出 復用功能推挽輸出 復用功能開漏輸出 以STM32L011為例(其他STM32處理器大同小異),GPIO基本結構如下所示: 關鍵器件解析: 1、保護二極管:防止I/O引腳外部過高、過低的電壓輸入,當引腳電壓高于VDDIOx時,上方的二極管導通;當引腳電壓低于VSS時,下方的二極管導通,防止不正常電壓引入芯片導致芯片燒毀。 2、開關:開關為TTL肖特基觸發器,將模擬信號轉化為0和1的數字信號,但當GPIO作為ADC采集電壓通道時,此時信號不再經過觸發器進行TTL電平轉換。 3、P-MOS、N-MOS:單元電路使得GPIO具有“推挽輸出”和“開漏輸出”的功能。 STM32具有浮空輸入、上拉輸入、下拉輸入和模擬輸入4種輸入模式。 浮空輸入模式,I/O端口的電平信號由外部輸入決定,電平狀態不確定,最終直接進入輸入數據寄存器。浮空輸入通常用于配置USART的RX引腳,如下圖所示: 上拉輸入模式,I/O端口懸空(在無信號輸入)的情況下,電平狀態保持在高電平,當輸入低電平時,電平狀態是低電平,最終直接進入輸入數據寄存器,如下圖所示: 下拉輸入模式,I/O端口懸空(在無信號輸入)的情況下,電平狀態保持在低電平,當輸入高電平時,電平狀態是高電平,最終直接進入輸入數據寄存器,如下圖所示: 模擬輸入模式,I/O端口的模擬信號(電壓信號,而非電平信號)直接模擬輸入到片上外設模塊,比如ADC模塊等。模擬輸入通常應用于ADC模擬輸入,或者低功耗下省電等情景,如下圖所示: STM32有開漏輸出、推挽輸出、復用功能開漏輸出和復用功能推挽輸出4種輸出模式(本文STM32L011的上、下拉電阻為公共區域,所以輸出模式具有上拉或下拉功能)。 開漏輸出模式,通過配置置位/復位寄存器或者輸出數據寄存器的值,途經N-MOS管,最終輸出到I/O端口。開漏輸出只可以輸出強低電平,高電平得靠外部電阻拉高,輸出端相當于三極管的集電極,適合于做電流型的驅動,其吸收電流的能力相對強(一般20ma以內),如下圖所示: 需要注意N-MOS管的特性,當設置輸出的電平狀態為高電平時,N-MOS管處于關閉狀態,此時I/O端口的電平就不會由輸出的高低電平決定,而是由I/O端口內部或者外部的上拉或者下拉決定;當設置輸出的電平狀態為低電平時,N-MOS管處于開啟狀態,此時I/O端口的電平就是低電平。 推挽輸出模式,通過配置置位/復位寄存器或者輸出數據寄存器的值,P-MOS管和N-MOS管,最終輸出到I/O端口。推挽輸出可以輸出強高、低電平,連接數字器件,如下圖所示: 需要注意P-MOS管和N-MOS管的特性,當設置輸出的電平狀態為高電平時,P-MOS管處于開啟狀態,N-MOS管處于關閉狀態,此時I/O端口的電平就由P-MOS管決定:高電平;當設置輸出的電平狀態為低電平時,P-MOS管處于關閉狀態,N-MOS管處于開啟狀態,此時I/O端口的電平就由N-MOS管決定:低電平。 復用功能開漏輸出模式、復用功能推挽輸出模式的原理和開漏輸出模式、推挽輸出模式原理基本一致,只不過輸出的高低電平,不是由MCU配置置位/復位寄存器或者輸出數據寄存器的值,而是利用片上外設模塊的復用功能輸出來決定的(通信接口(SPI,UART,I 2 C,USB,CAN,LCD等)、定時器、調試接口等復用)。復用功能開漏輸出通常用于TX1、MOSI、MISO等引腳的配置,復用功能推挽輸出通常用于I2C的SCL、SDA。以復用功能推挽輸出模式為例,實現原理如下圖所示: 如何選擇適合其應用開發的GPIO模式和配置呢?請參考下圖所示。1、基本結構
2、4種輸入模式
3、4種輸出模式
4、GPIO選型和配置
?著作權歸作者所有,
上一篇:STM32的CAN過濾器-bxCAN的過濾器的4種工作模式以及使用方法總結
下一篇:入門單片機stm32定時器詳解
推薦閱讀最新更新時間:2025-04-23 17:21



