General Purpose Input/Output (GPIO)
每個 GPIO 可以被當成 input, output, analog 或 alternate function
- alternate function 是指其他的的功能, 如 I2C, SPI, USART, CCP, PWM, Clock 等。如何控制則取決於外部設備 (peripheral)
- STM32F4xx 每個 GPIO Port 有 10 個 32-bit 暫存器 (Register)
- Configuration Register: GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR 與 GPIOx_PUPDR
- Data Register: GPIOx_IDR and GPIOx_ODR
- Set/Reset Register: GPIOx_BSRR
- Locking Register: GPIOx_LCKR 【防止因錯誤而改變GPIO的用途(accidental repurposing)】
- Alternate Function Selection Register: GPIOx_AFRH 與 GPIOx_AFRL
Input會有兩種狀態(floating, pull-up/down),output也有兩種狀態(push-pull, open drain with pull-up/down resistors)。
Input mode:我們可以利用GPIO的input data register(GPIOx_IDR) 或是memory中提供給目標設備的data register (當設成alternate function的時候)去接收data。
Output mode(非analog):GPIO提供output data register (GPIOx_ODR)及Bit set/reset register (GPIOx_BSRR)來對目標設備做控制
Alternate function:此時要用memory中另外規劃給目標設備用的register對Pin腳進行控制。
Analog mode:input和output會轉由adc/dac那邊做處理。
結論: 理解了GPIO的主要功能analog/ Alternate /IO 及設定方向
每個GPIO都有10個32bits的reg.
- Configuration Register: GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR 與 GPIOx_PUPDR
- Data Register: GPIOx_IDR and GPIOx_ODR
- Set/Reset Register: GPIOx_BSRR
- Locking Register: GPIOx_LCKR
- Alternate Function Selection Register: GPIOx_AFRH 與 GPIOx_AFRL
文章標籤
全站熱搜