|
單片機(jī)STM32的引腳有多種方式可以選擇。
如果你是用直接寫(xiě)寄存器來(lái)配置的話,那么,看上手冊(cè),給“配置寄存器”對(duì)應(yīng)的位寫(xiě)0或者1就可以達(dá)到目的。如下圖:

(點(diǎn)擊圖片可放大)
如果是用庫(kù)函數(shù)來(lái)配置的話,就需要知道下面這個(gè)結(jié)構(gòu)體中的變量代表的意義。

庫(kù)函數(shù),選擇好GPIO_Mode之后,就要使用GPIO_Init()函數(shù)來(lái)配置,你可以打開(kāi)這個(gè)配置函數(shù),實(shí)際上也是在對(duì)“配置寄存器”進(jìn)行寫(xiě)操作。
先解釋一下這個(gè)結(jié)構(gòu)體中的各個(gè)變量的意思:
GPIO_Mode_AIN:模擬輸入模式
GPIO_Mode_IN_FLOATING:浮空輸入模式
GPIO_Mode_IPD:下拉輸入模式
GPIO_Mode_IPU:上拉輸入模式
GPIO_Mode_Out_OD:通用開(kāi)漏輸出模式
GPIO_Mode_Out_PP:通用推挽輸出模式
GPIO_Mode_AF_OD:復(fù)用開(kāi)漏輸出模式
GPIO_Mode_AF_PP:復(fù)用推挽輸出模式
前四個(gè)是輸入模式,后四個(gè)是輸出模式。
輸入和輸出
從51過(guò)來(lái)的人,對(duì)輸入和輸出比較陌生。51單片機(jī)不用設(shè)置輸入和輸出模式,自動(dòng)變換,無(wú)需程序配置,當(dāng)我們寫(xiě)程序讀引腳的電平的時(shí)候,實(shí)際上就是作為輸入模式來(lái)使用,當(dāng)我們寫(xiě)程序讓引腳輸出電平的時(shí)候,實(shí)際上就是作為輸出模式來(lái)使用。也就是說(shuō),并不是51單片機(jī)沒(méi)有輸入和輸出這個(gè)概念,而是你已經(jīng)使用了很久卻沒(méi)有發(fā)現(xiàn)。
STM32與51的區(qū)別就是:當(dāng)我們要讀引腳電平的時(shí)候,也就是作為輸入,我們必須要先把引腳設(shè)置為輸入功能,才可以讀。當(dāng)我們要控制引腳高低電平的時(shí)候,也就是作為輸出,我們必須要先把引腳設(shè)置為輸出功能,才可以設(shè)置。
上拉與下拉
概念比較抽象,你只需要記。涸谝_上沒(méi)有外界干擾的情況下,上拉就是把引腳設(shè)置為高電平了,你用萬(wàn)用表量上拉引腳,就是高電平;下拉就是把引腳設(shè)置為低電平了,你用萬(wàn)用表量下拉引腳,就是低電平,也就是0V。
推挽與開(kāi)漏
概念比較抽象,你只需要記。涸O(shè)置為推挽,就是提高了引腳的輸出電流能力。設(shè)置為開(kāi)漏,就是提高了引腳的輸入電流能力。然后還要知道,設(shè)置為開(kāi)漏時(shí),如果外部不加上拉電阻,默認(rèn)輸出是低電平。
通用與復(fù)用
通用就是作為普通的輸入和輸出引腳。復(fù)用就是該引腳可以作為SPI引腳I2C引腳等其他功能的引腳。
使用介紹
結(jié)合上面講的,可以得到一些簡(jiǎn)單的應(yīng)用設(shè)置方式。
比如檢測(cè)按鍵,就應(yīng)該設(shè)置為輸入,如果外部沒(méi)有加上拉電阻,你就需要設(shè)置引腳為上拉輸入,這樣如果檢測(cè)到引腳是低電平,就是按下按鍵了。如果外部加了上拉電阻,你這時(shí)既可以把引腳設(shè)置為上拉輸入,也可以設(shè)置為浮空輸入,設(shè)置為這兩種,由于外部上拉電阻的原因,默認(rèn)就是高電平,同樣,檢測(cè)到低電平時(shí),就是按鍵按下了。
當(dāng)你要控制引腳高低電平做應(yīng)用時(shí),就是需要把引腳設(shè)置為輸出功能。例如驅(qū)動(dòng)一個(gè)器件,驅(qū)動(dòng)一個(gè)發(fā)光二極管等。如果你要使用高電平點(diǎn)亮發(fā)光二極管,就需要把引腳設(shè)置為推挽輸出,以增大電流輸出能力,如果你設(shè)置為開(kāi)漏輸出,發(fā)光二極管肯定是點(diǎn)不亮了。但是如果你使用低電平點(diǎn)亮發(fā)光二極管,那么設(shè)置為開(kāi)漏和推挽輸出都可以正常點(diǎn)亮發(fā)光二極管。
上面內(nèi)容比較抽象,需要結(jié)合實(shí)際才可深入理解。暫時(shí)理解不了的,不用著急,接觸的多了,自然會(huì)理解透徹的。
學(xué)電子,關(guān)注微信公眾號(hào):科技老頑童
|
|