前幾天Hotpower邀請大家討論一下GPIO的功能、性能和優(yōu)缺點(diǎn)(STM32的GPIO很強大~~~),等了幾天沒(méi)見(jiàn)太多人發(fā)言,但綜合來(lái)看提到了3點(diǎn):1)真雙向IO,2)速度快,3)寄存器功能重復。關(guān)于第3點(diǎn)有說(shuō)好,有說(shuō)多余的,見(jiàn)仁見(jiàn)智。 下面我就在做個(gè)拋磚引玉,根據ST手冊上的內容,簡(jiǎn)單地綜述一下GPIO的功能: 一、共有8種模式,可以通過(guò)編程選擇: 1. 浮空輸入 2. 帶上拉輸入 3. 帶下拉輸入 4. 模擬輸入 5. 開(kāi)漏輸出——(此模式可實(shí)現hotpower說(shuō)的真雙向IO) 6. 推挽輸出 7. 復用功能的推挽輸出 8. 復用功能的開(kāi)漏輸出 模式7和模式8需根據具體的復用功能決定。 二、專(zhuān)門(mén)的寄存器(GPIOx_BSRR和GPIOx_BRR)實(shí)現對GPIO口的原子操作,即回避了設置或清除I/O端口時(shí)的“讀-修改-寫(xiě)”操作,使得設置或清除I/O端口的操作不會(huì )被中斷處理打斷而造成誤動(dòng)作。 三、每個(gè)GPIO口都可以作為外部中斷的輸入,便于系統靈活設計。 四、I/O口的輸出模式下,有3種輸出速度可選(2MHz、10MHz和50MHz),這有利于噪聲控制。 五、所有I/O口兼容CMOS和TTL,多數I/O口兼容5V電平。 六、大電流驅動(dòng)能力:GPIO口在高低電平分別為0.4V和VDD-0.4V時(shí),可以提供或吸收8mA電流;如果把輸入輸出電平分別放寬到1.3V和VDD-1.3V時(shí),可以提供或吸收20mA電流。 七、具有獨立的喚醒I/O口。 八、很多I/O口的復用功能可以重新映射,見(jiàn):你知道嗎?STM32上很多管腳功能可以重新映射。 九、GPIO口的配置具有上鎖功能,當配置好GPIO口后,可以通過(guò)程序鎖住配置組合,直到下次芯片復位才能解鎖。此功能非常有利于在程序跑飛的情況下保護系統中其他的設備,不會(huì )因為某些I/O口的配置被改變而損壞——如一個(gè)輸入口變成輸出口并輸出電流。 十、輸出模式下輸入寄存器依然有效,在開(kāi)漏配置模式下實(shí)現真正的雙向I/O功能。 我這里總結的不一定全面,請各位補充,并討論各種功能在實(shí)際應用中的優(yōu)缺點(diǎn),謝謝。 發(fā)表日期:2008-4-12 |