M3系列的單片機(jī)的普通I/O口可以設(shè)計為輸入或者輸出模式,并且程序中間可以動態(tài)變換;輸入時可以配置為模擬輸入,浮空輸入,上拉/下拉輸入;輸出時可以配置為推挽輸出、開漏輸出、復(fù)用功能開漏輸出,同時也可以設(shè)置輸出I/O電平翻轉(zhuǎn)速度。
(1): 模擬輸入:一般作為ADC采集時使用。
(2):上拉/下拉輸入:引腳內(nèi)部接上拉/下拉電阻后作為輸入引腳。
(3):浮空輸入:引腳既沒有上拉也沒有下拉,懸空作為輸入,此時引腳為高阻態(tài)模式,當(dāng)外部沒有明確的高電平輸入時,引腳讀出的0和1沒有實(shí)際意義。
(4):開漏輸出:就是I/O不輸出電壓,在低電平接地,在高電平類似浮空,需要外接上拉電阻。
(5):推挽輸出:這種模式下,I/O引腳通過MOS管進(jìn)行輸出放大,輸出高電平平時為3.3v,輸出電流最大50mA,驅(qū)動能力比較強(qiáng)。
相關(guān)寄存器
(1):GPIOx_CRL(端口配置低寄存器) 每個I/O需要4位進(jìn)行輸入輸出的配置,每個寄存器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位保留;