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那邊做處理。

 

Capture  

 

Capture2  

 

結論: 理解了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

 

 

 

 

 

 

arrow
arrow

    小影 發表在 痞客邦 留言(0) 人氣()