學任何一種MCU,最重要的一課,就是要把GPIO搞清楚,以下是用STM32 L1系列所做的重點整理,其餘系列也是一樣,可以參考。
註:在圖上按左鍵可放大圖檢示
GPIO基本結構
GPIO可以設為4種模式之一:
1. General
input
2. General
output
3. Analog
4. AF(Alternate function)
General
input 可設為以下三種之一:
1. Input floating
2. Input pull-up
3. Input pull-down
General
output 可設為以下二種之一:
1. Output
open-drain with pull-up or pull-down
2. Output
push-pull with pull-up or pull-down
AF(Alternate function) 可設為以下二種之一:
1. Alternate
function push-pull with pull-up or pull-down
2. Alternate
function open-drain with pull-up or pull-down
有關GPIO的使用,原文有詳細說明,節錄如下:
當I/O PORT 配置為OUTPUT時,注意:
Open drain mode:
此mode下,P-MOS完全沒作用,output
register "0"使 N-MOS 導通,輸出為 Low,
"1"使N-MOS 關閉,I/O在高阻抗狀態(Hi-Z)。
Push-pull mode:
當 N-MOS 導通,P-MOS 就會關閉,輸出為 Low。
當 P-MOS 導通,N-MOS 就會關閉,輸出為 High;
因為 N-MOS 和 P-MOS 的狀態都相反,所以稱為 push-pull。
output register "0"使 N-MOS導通,"1"使 P-MOS導通。
綜上所述,要讓Output值同設定值,要將Output mode設為Push-pull mode。
I/O PORT 配置為AF(Alternate function)
I/O PORT 配置為Analog
註:
在電源重啟後,所有的 Pin 都是 Input Floating,GPIO 切換到其他功能都是關閉的。直到 reset完成,GPIOA13-15 和 GPIOB3-4 才會切換到 JTAG 用於除錯。此時,
PA15: JTDI in pull-up
PA14: JTCK/SWCLK in pull-down
PA13: JTMS/SWDAT in pull-up
PB4: NJTRST in pull-up
PB3: JTDO in floating state
而UART1_TX(PA9) / UART1_RX(PA10) 來當成 UART
loader,用來更新 Firmware。
沒有留言:
張貼留言