GPIO (General purpose input-output) - Регистры портов ввода-вывода общего назначения


Offset: 0x00
Port configuration register low
Регистр конфигурации младших портов ввода-вывода [0:7]
Offset: 0x04
Port configuration register high
Регистр конфигурации старших портов ввода-вывода [8:15]
Offset: 0x08
Port input data register
Регистр входных данных
Offset: 0x0C
Port output data register
Регистр выходных данных
Offset: 0x10
Port bit set/reset register
Регистр побитового сброса/установки выходных данных
Offset: 0x14
Port bit reset register
Регистр побитового сброса выходных данных
Offset: 0x18
Port configuration lock register
Регистр защиты конфигурации (CRL, CRH) портов от программного изменения



#define PERIPH_BASE         ((uint32_t)0x40000000)     /* Peripheral base address in the alias region */
#define APB1PERIPH_BASE     PERIPH_BASE
#define APB2PERIPH_BASE     (PERIPH_BASE + 0x10000)
#define AHBPERIPH_BASE      (PERIPH_BASE + 0x20000)

#define GPIOA_BASE          (APB2PERIPH_BASE + 0x0800)
#define GPIOB_BASE          (APB2PERIPH_BASE + 0x0C00)
#define GPIOC_BASE          (APB2PERIPH_BASE + 0x1000)
#define GPIOD_BASE          (APB2PERIPH_BASE + 0x1400)
#define GPIOE_BASE          (APB2PERIPH_BASE + 0x1800)
#define GPIOF_BASE          (APB2PERIPH_BASE + 0x1C00)
#define GPIOG_BASE          (APB2PERIPH_BASE + 0x2000)

#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
#define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
#define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)
#define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)
#define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)
#define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE)
#define GPIOG               ((GPIO_TypeDef *) GPIOG_BASE)


typedef struct
{
  __IO uint32_t CRL;
  __IO uint32_t CRH;
  __IO uint32_t IDR;
  __IO uint32_t ODR;
  __IO uint32_t BSRR;
  __IO uint32_t BRR;
  __IO uint32_t LCKR;
} GPIO_TypeDef;