M3系列的單片機的普通I/O口可以設計為輸入或者輸出模式,并且程序中間可以動態變換;輸入時可以配置為模擬輸入,浮空輸入,上拉/下拉輸入;輸出時可以配置為推挽輸出、開漏輸出、復用功能開漏輸出,同時也可以設置輸出I/O電平翻轉速度。
(1): 模擬輸入:一般作為ADC采集時使用。
(2):上拉/下拉輸入:引腳內部接上拉/下拉電阻后作為輸入引腳。
(3):浮空輸入:引腳既沒有上拉也沒有下拉,懸空作為輸入,此時引腳為高阻態模式,當外部沒有明確的高電平輸入時,引腳讀出的0和1沒有實際意義。
(4):開漏輸出:就是I/O不輸出電壓,在低電平接地,在高電平類似浮空,需要外接上拉電阻。
(5):推挽輸出:這種模式下,I/O引腳通過MOS管進行輸出放大,輸出高電平平時為3.3v,輸出電流最大50mA,驅動能力比較強。
相關寄存器
(1):GPIOx_CRL(端口配置低寄存器) 每個I/O需要4位進行輸入輸出的配置,每個寄存器32位,一個寄存器只配置8個引腳,M3每組端口一般有16個I/0引腳,所以有高低寄存器。
復位值:0x4444 4444?
(2):GPIOx_CRH(端口配置高寄存器),與GPIOx_CRL(端口配置低寄存器)配置一樣。
復位值:0x4444 4444
(3):GPIOx_IDR(端口輸入數據寄存器),0-15位端口輸入,這些位只讀,讀出值對應I/O狀態;16:31保留。讀出數據始終為0;
(4):GPIOx_ODR(端口輸出數據寄存器),0-15位:這些位可讀可寫;16:31保留。讀出數據始終為0;
(5):GPIOx_BSRR(端口位設置/清除寄存器);0-15(BS)位置1,16:31(BR)位復位;優先級BS>BR;
(6):GPIOx_BRR(端口位清除寄存器);0-15(BR)復位,16:31位保留;