STM32-GPIO的八中輸入輸出模式
????在學習STM32的過程中,對于GPIO的模式配置一直都是模棱兩可,今天就想好好把這個給吃透,所以寫了這篇專欄,方便以后遺忘后復習。
1.八種基本輸入輸出模式
????我的英語那是真不好,大家往下看就知道了,所以我把下面的,標準庫參數(shù)英語全稱也寫上了,希望有一天我能記住吧,后面的是基于STM32F103標準庫寫的。
輸入模式:
(1)浮空輸入GPIO_Mode_IN_FLOATING(我理解的IN就是輸入吧,F(xiàn)LOATING可以看作是float浮點數(shù)數(shù)據(jù)類型,然后加個ing,這樣就好記了。)
(2)上拉輸入GPIO_Mode_IPU(IPU是In Pull Up的簡寫)
(3)下拉輸入GPIO_Mode_IPD(IPD是In Pull Down的簡寫,pull有拉的意思)
(4)模擬輸入GPIO_Mode_AIN(AIN是Analog Input的簡寫,A是Analog模擬的意思,IN就是輸入Input)
輸出模式:
(1)推挽輸出GPIO_Mode_Out_PP(out push—pull,push有推的意思,pull有拉的意思,推挽的挽,可以想象成挽留,既然要挽留,那就要拉出人家的胳膊,推挽、推拉、push-pull、簡寫就是PP)
(2)開漏輸出GPIO_Mode_Out_OD(out open drain,drain有流水、流失、漏之意,所以open?drain就是開漏的意思,簡寫成OD)
(3)復用推挽輸出GPIO_AF_PP(alternate function open push—pull)
(4)復用開漏輸出GPIO_AF_OD(alternate function open drain)
2.詳細作用
(1)浮空輸入
????浮空輸入,就是浮起來,飄忽不定的,這時候GPIO的電平是不確定的,完全由外部決定,外部輸入高電平就是高,輸入低電平就是低;當外部沒有電平輸入時(也就是懸空),該端口的電平是不確定的,不能確定是高電平或則時低電平,可以理解為不高不低的電平。
(2)上拉輸入
????這個顧名思義GPIO_Mode_IPU,Input Pull? Up—>輸入拉上的意思,也就是輸入上拉,一般也會叫成上拉輸入,這個模式,在外部沒有信號輸入的時候,始終為高電平,當外部有低電平輸入時才為低電平,否則為高電平。
(3)下拉輸入
????下拉輸入和上拉輸入,基本類似,當外部沒有電平輸入時,始終為電平,有高電平輸入時才為高電平,其余時間為低電平。
(4)模擬輸入
????模擬輸入一般和ADC配合使用,將輸入的模擬量轉(zhuǎn)化為數(shù)字量,這個很好理解。

下面這四種輸出模式才是難點,是我模棱兩可的地方。詳細講解可以看文章最后那個大佬的講解的
(5)推挽輸出
????是我們在GPIO配置為輸出模式時,最常用的模式,一般都是配置成推挽輸出,因為只有當推挽輸出模式時,我們輸出1,該GPIO才為高電平,輸出0,GPIO才為低電平,比如輸出高低電平,控制LED等亮滅,就是用的推挽輸出。
(6)開漏輸出
????開漏輸出和推挽輸出區(qū)別在于,當輸出1的時候,這時的1起不到作用,輸出的電平由外部上拉電阻決定,如果沒有外部上拉電阻,則為懸空狀態(tài);輸出0時,卻沒有影響,和推挽輸出一樣,輸出0,即GPIO輸出為為低電平。
(7)復用推挽輸出
????這個首先得理解復用的意思,這里的復用,不是指重定義GPIO,而是指的GPIO的第二功能,比如USART、IIC、SPI等這些外設復用,通常當我們CPU需要輸出數(shù)據(jù)到這些外設時,GPIO就需要配置成復用輸出,在我們使用定時器的輸出比較輸出PWM波、使用串口發(fā)送數(shù)據(jù)等等,就需要將GPIO配置成復用推挽輸出的模式。
(8)復用開漏輸出
????復用開漏輸出也是針對的外設。
至于什么時候該配置成什么模式,可以區(qū)百度,或者看參考手冊。

此外,下圖也是文末鏈接里大佬歸納的,各個場景的GPIO模式。

????到這里就差多寫完,寫完這些,相當于大知識點都梳理了一遍,我的邏輯也更清晰了。小白初學STM32,專欄是為了,梳理知識點、便于復習的,如果寫的不好,還請指正。大家一起加油,心想事成!

參考:
【STM32】STM32F4 GPIO八種模式及工作原理詳解_(1)在stm32f407xx中,gpio的工作模式有幾種?_Z小旋的博客-CSDN博客https://blog.csdn.net/as480133937/article/details/98063549