來源:https://blog.csdn.net/lvk/category_8448763.html
GPIO是通用輸入輸出模塊,MCU可將一個 IO設為模擬模式,作為 ADC輸入;設為數字輸入輸出,或是外設端口,供特定外設使用。使用端口功能前,需要先把 GPIO模塊時鍾控制功能打開。
本系列 GPIO的可復用的特殊端口有 RESET、外部晶振引腳、SWD、UART 編程接口等,用戶在不同的應用當中需要根據這些端口的特性及應用特點選擇不同的復用方式。
RESET引腳復用為輸入端口
當外部復位引腳檢測到低電平時會產生一個系統復位。該復位引腳已內置上拉電阻,並集成了一個毛刺過濾電路。毛刺過濾電路會過濾小於 20uS(典型值)的毛刺信號,因此,加到復位引腳上的低電平信號必須大於 20uS,才能確保芯片可靠復位。RESET 引腳可以復用為輸入端口 P0.0。如果要使用 RESET 作為輸入端口 P0.0,參考流程如下:
1. GPIO模塊時鍾控制功能打開:PERI_CLKEN.GPIO置為 1
2.向系統控制寄存器 SYSCTRL2依次寫入 0x5A5A、0xA5A5,使能寄存器改寫
3. 系統控制寄存器的 RESET_USE_IO時鍾控制位:SYSCTRL1. RES_UIO使能
注意:
- 在復用 RESET 引腳作為輸入端口的時候,仍必須確保外圍電路的設計,在上電時要保證該引腳不能為低電平(Low-Level),否則程序無法運行。
- 該端口已經內置上拉電阻,所以該引腳即使作為輸入端口,也只能是作為“輸入且具有上拉功能的輸入端口”。
外部晶振端口復用為 I/O端口
當不使用外部高速晶振或低速晶振時,以下端口可以復用為 I/O功能。
X32MOUT → P0.1
X32MIN → P0.2
X32KOUT → P1.5
X32KIN → P1.4
復用 I/O功能流程如下:
1. GPIO模塊時鍾控制功能打開:PERI_CLKEN.GPIO置為 1。
2. P0.1和 P0.2、P1.5和 P1.4需要配置為數字端口:P0ADS和 P1ADS相關位配置為 0。
3. 功能配置寄存器選為 GPIO功能:P01_SEL,P02_SEL,P15_SEL,P14_SEL設為 0。
4. 選擇輸入輸出方向:設置 P00DIR和 P1DIR的相關位(0:輸出,1:輸入)
SWD調試編程端口復用為 I/O功能
SWD端口作為該系列 MCU的調試和下載端口,用戶可根據實際需求選擇是否預留該端口作為調試或量產編程使用。如果不需要使用 SWD端口作為調試編程,SWCLK 與 SWDIO引腳可以復用為 I/O引腳。
復用 I/O功能參考流程如下:
1. GPIO模塊時鍾控制功能打開:PERI_CLKEN.GPIO置為 1
2.向系統控制寄存器 SYSCTRL2依次寫入 0x5A5A、0xA5A5,使能寄存器改寫
3. 系統控制寄存器的 SWD_USE_IO時鍾控制位(SYSCTRL1. SWD_UIO)使能
4. P27_SEL.SEL與 P31_SEL.SEL設置為 0
5. P2DIR.P27與 P3DIR.P31 設置為輸入或輸出
注意:
- 從上電到 SWD被復用配置為 I/O端口生效為止,P27和 P31引腳的電平默認為高電平,因此在外圍電路的設計中,應加以注意和規避。
- 當把 SWD端口復用為 I/O功能時,通過 SWD的在線調試與下載功能就會失效。
- 在用戶調試時,可以通過串口擦除或下載其他沒有復用 SWD的程序恢復 SWD在線調試和下載功能,或者在應用程序中復用 SWD端口之前添加幾秒的延時。
UART離線編程端口復用為 I/O端口
該系列 MCU使用 UART端口 P3.5(TX)、P3.6(RX)作為離線編程功能,用戶在實際應用中可根據需求選擇是否預留該端口作為后續量產下載的燒錄端口。
為配合離線編程器進入下載模式,MCU上電時 P3.5(TX)端口會輸出約 10ms的高電平脈沖作為握手信號。應用中需要使用該端口(P3.5)作為輸出功能時,硬件電路應考慮規避該脈沖對整個應用的影響,或盡量避免使用該端口作為輸出功能。
