Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
stm32:peripherals:gpio_output [2016/02/25 08:25] feurstm32: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 [[#registers|PUPDR]].   * The pull-up and -down resistors are active, according to [[#registers|PUPDR]].
Line 10: Line 10:
 \\ {{gpio_output.svg}} \\ \\ \\ {{gpio_output.svg}} \\ \\
  
-===== Programming example =====+===== Programming Instructions =====
  
-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 "reg_stm32f4xx.h"+  * Enable GPIOx in ''RCC->AHBENR[0]''.
  
-/* Configure GPIO pin A.5 as output. */ +==== Setup output mode ====
-GPIOA->MODER &~(0x3 << 10u);    /* Clear existing mode bits 10 and 11. */ +
-GPIOA->MODER |(0x1 << 10u);     /* Set pin 10 to pull-up mode. */+
  
-GPIOA->PUPDR &= ~(0x3 << 10u);    /Clear existing pull-up/-down bits 10 and 11. */ +Configure the MODE and PUPDR as well as the output type and speed register, \\ for every pin that should act as digital output: 
-GPIOA->PUPDR |= (0x2 << 10u);     /* Set pin 5 to pull-down mode. *+  * Write ''0x01'' to the corresponding fields in ''GPIOx->MODE''
- +  Configure pull-up / -down in ''GPIOx->PUPDR''. 
-GPIOA->OTYPER &= ~(0x1 << 5u);    /* Clear existing output type bit 5. */ +  Configure output type in ''GPIOx->OTYPER''. \\ (in conjunction with ''GPIOx->PUPDR'') 
- +  Configure output speed in ''GPIOx->OSPEEDR''.
-GPIOA->OSPEEDR &= ~(0x3 << 10u) /Clear existing output speed bits 10 and 11. */ +
-GPIOA->OSPEEDR |= (0x1 << 10u);   /* Set pin 5 to medium speed (10 MHz) mode*/ +
- +
-/* Write to GPIO pin A.5. */ +
-GPIOA->IDR |= (0x1 << 5u);        /* Write to data register. */ +
- +
-GPIOA->BSRR[0] = (0x1 << 5u);     /* Directly set GPIO pin A.5. */ +
-GPIOA->BSRR[1] = (0x1 << 5u);     /* Directly clear GPIO pin A.5. */ +
-</code>+
 \\ \\
  
 ===== 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
 +|:::|11|Reserved|
  
-==== 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/reset pin x| 
 +|:::|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/reset pin x| +|:::|1|Set pin x| 
- +|BRx|0|No effext| 
-===== Legend =====+|:::|1|Clear/reset pin x|
  
-\\ {{legende.svg}} \\ \\ 
  • stm32/peripherals/gpio_output.1456388701.txt.gz
  • Last modified: 2016/02/25 08:25
  • by feur