Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| stm32:peripherals:gpio_output [2016/02/25 08:25] – feur | stm32:peripherals:gpio_output [2022/12/28 08:17] (current) – ruan | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== General Purpose Output ====== | ====== General Purpose Output ====== | ||
| - | * The [[OTYPER|output buffer]] is enabled (open drain or push-pull). | + | * The [[#OTYPER|output buffer]] is enabled (open drain or push-pull). |
| * The Schmitt trigger input is active. | * The Schmitt trigger input is active. | ||
| * The pull-up and -down resistors are active, according to [[# | * The pull-up and -down resistors are active, according to [[# | ||
| Line 10: | Line 10: | ||
| \\ {{gpio_output.svg}} \\ \\ | \\ {{gpio_output.svg}} \\ \\ | ||
| - | ===== Programming | + | ===== Programming |
| - | The code snippet bellow shows how to configure and use a GPIO pin as output. | + | ==== Enable Peripheral ==== |
| - | <code c> | + | Make sure the peripheral is enabled: |
| - | #include " | + | * Enable GPIOx in '' |
| - | /* Configure GPIO pin A.5 as output. */ | + | ==== Setup output |
| - | GPIOA-> | + | |
| - | GPIOA-> | + | |
| - | GPIOA->PUPDR &= ~(0x3 << 10u); /* Clear existing | + | Configure the MODE and PUPDR as well as the output type and speed register, \\ for every pin that should act as digital output: |
| - | GPIOA-> | + | * Write '' |
| - | + | | |
| - | GPIOA-> | + | |
| - | + | | |
| - | GPIOA->OSPEEDR &= ~(0x3 << 10u); /* Clear existing | + | |
| - | GPIOA-> | + | |
| - | + | ||
| - | /* Write to GPIO pin A.5. */ | + | |
| - | GPIOA-> | + | |
| - | + | ||
| - | GPIOA-> | + | |
| - | GPIOA-> | + | |
| - | </ | + | |
| \\ | \\ | ||
| ===== Configuration Registers ===== | ===== Configuration Registers ===== | ||
| - | ==== MODER ==== | + | ==== GPIOx_MODER - Port mode register |
| - | + | ||
| - | Mode register | + | |
| \\ {{gpio_reg_common.svg}} \\ \\ | \\ {{gpio_reg_common.svg}} \\ \\ | ||
| - | |< 100% 5em >| | + | |< 100% 5em 5em >| |
| - | |01|Output mode (reset state)| | + | |Pin x|01|Output mode| |
| - | ==== PUPDR ==== | + | ==== GPIOx_PUPDR - Port pull-up / pull-down register |
| - | + | ||
| - | Push-up / pull-down register | + | |
| \\ {{gpio_reg_common.svg}} \\ \\ | \\ {{gpio_reg_common.svg}} \\ \\ | ||
| - | |< 100% 5em >| | + | |< 100% 5em 5em >| |
| - | |00|No pull-up, pull-down (reset state)| | + | |Pin x|00|No pull-up, pull-down (reset state)| |
| - | |01|Pull-up| | + | |:::|01|Pull-up| |
| - | |10|Pull-down| | + | |:::|10|Pull-down| |
| + | |::: | ||
| - | ==== OTYPER | + | ==== GPIOx_OTYPER - Port output type register |
| - | + | ||
| - | Output type register | + | |
| \\ {{gpio_reg_otyper.svg}} \\ \\ | \\ {{gpio_reg_otyper.svg}} \\ \\ | ||
| - | |< 100% 5em >| | + | |< 100% 5em 5em >| |
| - | |0|Output type: push-pull (reset state)| | + | |Pin x|0|Output type: push-pull (reset state)| |
| - | |1|Output type: open-drain| | + | |:::|1|Output type: open-drain| |
| - | ==== OSPEEDR | + | ==== GPIOx_OSPEEDR - Port output speed register |
| - | + | ||
| - | Output speed register | + | |
| \\ {{gpio_reg_common.svg}} \\ \\ | \\ {{gpio_reg_common.svg}} \\ \\ | ||
| - | |< 100% 5em >| | + | |< 100% 5em 5em >| |
| - | |00|Speed: 2 MHz (reset state)| | + | |Pin x|00|Speed: 2 MHz (reset state)| |
| - | |01|Speed: 10 MHz| | + | |:::|01|Speed: 10 MHz| |
| - | |10|Speed: 50 MHz| | + | |:::|10|Speed: 50 MHz| |
| - | |11|Speed: 100 MHz| | + | |:::|11|Speed: 100 MHz| |
| ===== Data Registers ===== | ===== Data Registers ===== | ||
| - | ==== ODR ==== | + | ==== GPIOx_ODR - Port output data register |
| - | + | ||
| - | Output data register | + | |
| \\ {{gpio_reg_odr.svg}} \\ \\ | \\ {{gpio_reg_odr.svg}} \\ \\ | ||
| - | ==== BSRR ==== | + | |< 100% 5em 5em >| |
| + | |ODx|0|Clear/ | ||
| + | |:::|1|Set pin x| | ||
| - | Bit set / reset register | + | ==== GPIOx_BSRR Port bit set / reset register |
| \\ {{gpio_reg_bsrr.svg}} \\ \\ | \\ {{gpio_reg_bsrr.svg}} \\ \\ | ||
| - | |< 100% 5em >| | + | |< 100% 5em 5em >| |
| - | |BSx|Set pin x| | + | |BSx|0|No effect| |
| - | |BRx|Clear/ | + | |:::|1|Set pin x| |
| - | + | |BRx|0|No effext| | |
| - | ===== Legend ===== | + | |:::|1|Clear/ |
| - | \\ {{legende.svg}} \\ \\ | ||