在平時中會遇到設(shè)置單片機STM32的引腳,相信很多人有有疑問,本面文章主要介紹單片機STM32的引腳的設(shè)置方法,不過還要結(jié)合實際理解,如果理解不了,也無需著急,接觸多了慢慢就會理解。
如果你是用直接寫寄存器來配置的話,那么,看上手冊,給“配置寄存器”對應(yīng)的位寫0或者1就可以達到目的。如下圖:
如果是用庫函數(shù)來配置的話,就需要知道下面這個結(jié)構(gòu)體中的變量代表的意義。
庫函數(shù),選擇好GPIO_Mode之后,就要使用GPIO_Init()函數(shù)來配置,你可以打開這個配置函數(shù),實際上也是在對“配置寄存器”進行寫操作。
先解釋一下這個結(jié)構(gòu)體中的各個變量的意思:
GPIO_Mode_AIN:模擬輸入模式
GPIO_Mode_IN_FLOATING:浮空輸入模式
GPIO_Mode_IPD:下拉輸入模式
GPIO_Mode_IPU:上拉輸入模式
GPIO_Mode_Out_OD:通用開漏輸出模式
GPIO_Mode_Out_PP:通用推挽輸出模式
GPIO_Mode_AF_OD:復(fù)用開漏輸出模式
GPIO_Mode_AF_PP:復(fù)用推挽輸出模式
前四個是輸入模式,后四個是輸出模式。
輸入和輸出
從51過來的人,對輸入和輸出比較陌生。51單片機不用設(shè)置輸入和輸出模式,自動變換,無需程序配置,當(dāng)我們寫程序讀引腳的電平的時候,實際上就是作為輸入模式來使用,當(dāng)我們寫程序讓引腳輸出電平的時候,實際上就是作為輸出模式來使用。也就是說,并不是51單片機沒有輸入和輸出這個概念,而是你已經(jīng)使用了很久卻沒有發(fā)現(xiàn)。
STM32與51的區(qū)別就是:當(dāng)我們要讀引腳電平的時候,也就是作為輸入,我們必須要先把引腳設(shè)置為輸入功能,才可以讀。當(dāng)我們要控制引腳高低電平的時候,也就是作為輸出,我們必須要先把引腳設(shè)置為輸出功能,才可以設(shè)置。
上拉與下拉
概念比較抽象,你只需要記?。涸谝_上沒有外界干擾的情況下,上拉就是把引腳設(shè)置為高電平了,你用萬用表量上拉引腳,就是高電平;下拉就是把引腳設(shè)置為低電平了,你用萬用表量下拉引腳,就是低電平,也就是0V。
推挽與開漏
概念比較抽象,你只需要記?。涸O(shè)置為推挽,就是提高了引腳的輸出電流能力。設(shè)置為開漏,就是提高了引腳的輸入電流能力。然后還要知道,設(shè)置為開漏時,如果外部不加上拉電阻,默認(rèn)輸出是低電平。
通用與復(fù)用
通用就是作為普通的輸入和輸出引腳。復(fù)用就是該引腳可以作為SPI引腳I2C引腳等其他功能的引腳。
使用介紹
結(jié)合上面講的,可以得到一些簡單的應(yīng)用設(shè)置方式。
例如,檢測按鈕設(shè)置為輸入。如果沒有外接拉電阻,需要將引腳設(shè)置為上拉輸入,檢測到引腳為低時按下按鈕。如果你有一個外部的上拉電阻,你可以設(shè)置引腳為一個上拉輸入或一個浮動輸入。將其設(shè)置為其中之一,由于外部上拉電阻,默認(rèn)電平是高的。同樣,當(dāng)按鈕被按下時檢測到低電平。
當(dāng)你想要控制一個應(yīng)用程序的引腳級別時,你需要將引腳設(shè)置為輸出功能。例如,驅(qū)動器件,驅(qū)動發(fā)光二極管等。如果你想讓led亮在一個高電平,你需要設(shè)置引腳推拉輸出,以增加電流輸出。如果您設(shè)置引腳打開鉆輸出,led將不會點亮。然而,如果你使用低電平來點亮led,則漏極和推挽輸出都將正確地點亮。