M3系列的單片機的普通I/O口可以設(shè)計為輸入或者輸出模式嫌套,并且程序中間可以動態(tài)變換;輸入時可以配置為模擬輸入熙暴,浮空輸入眷柔,上拉/下拉輸入;輸出時可以配置為推挽輸出阀参、開漏輸出、復(fù)用功能開漏輸出,同時也可以設(shè)置輸出I/O電平翻轉(zhuǎn)速度蔗包。
(1): 模擬輸入:一般作為ADC采集時使用。
(2):上拉/下拉輸入:引腳內(nèi)部接上拉/下拉電阻后作為輸入引腳慧邮。
(3):浮空輸入:引腳既沒有上拉也沒有下拉调限,懸空作為輸入,此時引腳為高阻態(tài)模式误澳,當(dāng)外部沒有明確的高電平輸入時耻矮,引腳讀出的0和1沒有實際意義。
(4):開漏輸出:就是I/O不輸出電壓忆谓,在低電平接地裆装,在高電平類似浮空,需要外接上拉電阻。
(5):推挽輸出:這種模式下哨免,I/O引腳通過MOS管進行輸出放大茎活,輸出高電平平時為3.3v,輸出電流最大50mA,驅(qū)動能力比較強琢唾。
相關(guān)寄存器
(1):GPIOx_CRL(端口配置低寄存器) 每個I/O需要4位進行輸入輸出的配置载荔,每個寄存器32位,一個寄存器只配置8個引腳慧耍,M3每組端口一般有16個I/0引腳身辨,所以有高低寄存器。
復(fù)位值:0x4444 4444?
(2):GPIOx_CRH(端口配置高寄存器)芍碧,與GPIOx_CRL(端口配置低寄存器)配置一樣煌珊。
復(fù)位值:0x4444 4444
(3):GPIOx_IDR(端口輸入數(shù)據(jù)寄存器),0-15位端口輸入泌豆,這些位只讀定庵,讀出值對應(yīng)I/O狀態(tài);16:31保留踪危。讀出數(shù)據(jù)始終為0蔬浙;
(4):GPIOx_ODR(端口輸出數(shù)據(jù)寄存器),0-15位:這些位可讀可寫贞远;16:31保留畴博。讀出數(shù)據(jù)始終為0;
(5):GPIOx_BSRR(端口位設(shè)置/清除寄存器)蓝仲;0-15(BS)位置1,16:31(BR)位復(fù)位俱病;優(yōu)先級BS>BR;
(6):GPIOx_BRR(端口位清除寄存器);0-15(BR)復(fù)位,16:31位保留;