@GNU AS
@.CharSet=CP1251 (Cyrillic)
@.desc type=module
@ +------------------------------------------------------------------+
@ |                         Константы GPIO                           |
@ |                   для STM32F405/407/415/417                      |
@ +------------------------------------------------------------------+
@.enddesc

.include "/src/inc/base.inc"

@ константы GPIO
@.item AHB1PERIPH_BASE
.EQU  GPIO               , AHB1PERIPH_BASE + 0x0000    @ GPIO Controls Registers
@.END

@ регистры gpio для использования в том числе в bit band
@.item GPIO
.EQU  GPIOA_BASE         , AHB1PERIPH_BASE + 0x0000
.EQU  GPIOB_BASE         , AHB1PERIPH_BASE + 0x0400
.EQU  GPIOC_BASE         , AHB1PERIPH_BASE + 0x0800
.EQU  GPIOD_BASE         , AHB1PERIPH_BASE + 0x0C00
.EQU  GPIOE_BASE         , AHB1PERIPH_BASE + 0x1000
.EQU  GPIOF_BASE         , AHB1PERIPH_BASE + 0x1400
.EQU  GPIOG_BASE         , AHB1PERIPH_BASE + 0x1800
.EQU  GPIOH_BASE         , AHB1PERIPH_BASE + 0x1C00
.EQU  GPIOI_BASE         , AHB1PERIPH_BASE + 0x2000
.EQU  GPIOJ_BASE         , AHB1PERIPH_BASE + 0x2400
.EQU  GPIOK_BASE         , AHB1PERIPH_BASE + 0x2800
.EQU  GPIOA              , PERIPH_BASE + GPIOA_BASE
.EQU  GPIOB              , PERIPH_BASE + GPIOB_BASE
.EQU  GPIOC              , PERIPH_BASE + GPIOC_BASE
.EQU  GPIOD              , PERIPH_BASE + GPIOD_BASE
.EQU  GPIOE              , PERIPH_BASE + GPIOE_BASE
.EQU  GPIOF              , PERIPH_BASE + GPIOF_BASE
.EQU  GPIOG              , PERIPH_BASE + GPIOG_BASE
.EQU  GPIOH              , PERIPH_BASE + GPIOH_BASE
.EQU  GPIOI              , PERIPH_BASE + GPIOI_BASE
.EQU  GPIOJ              , PERIPH_BASE + GPIOJ_BASE
.EQU  GPIOK              , PERIPH_BASE + GPIOK_BASE
@.END

@.item GPIOA GPIOB GPIOC GPIOD GPIOE GPIOF GPIOG GPIOH GPIOI GPIOJ GPIOK
.EQU  GPIO_MODER         , 0x00          @ GPIO port mode register
.EQU  GPIO_OTYPER        , 0x04          @ GPIO port output type register
.EQU  GPIO_OSPEEDR       , 0x08          @ GPIO port output speed register
.EQU  GPIO_PUPDR         , 0x0C          @ GPIO port pull-up/pull-down register
.EQU  GPIO_IDR           , 0x10          @ GPIO port input data register
.EQU  GPIO_ODR           , 0x14          @ GPIO port output data register
.EQU  GPIO_BSRR          , 0x18          @ GPIO port bit set/reset register
.EQU  GPIO_LCKR          , 0x1C          @ GPIO port configuration lock register
.EQU  GPIO_AFRL          , 0x20          @ GPIO alternate function low register
.EQU  GPIO_AFRH          , 0x24          @ GPIO alternate function high register
@.END

@ Описание битов настройки
@.item GPIO_MODER
.EQU  GPIOA_MODER_RST_VAL, 0xA8000000    @ Port A reset value
.EQU  GPIOB_MODER_RST_VAL, 0x00000280    @ Port B reset value
.EQU  GPIO_MODER0_N      , 0
.EQU  GPIO_MODER1_N      , 2
.EQU  GPIO_MODER2_N      , 4
.EQU  GPIO_MODER3_N      , 6
.EQU  GPIO_MODER4_N      , 8
.EQU  GPIO_MODER5_N      , 10
.EQU  GPIO_MODER6_N      , 12
.EQU  GPIO_MODER7_N      , 14
.EQU  GPIO_MODER8_N      , 16
.EQU  GPIO_MODER9_N      , 18
.EQU  GPIO_MODER10_N     , 20
.EQU  GPIO_MODER11_N     , 22
.EQU  GPIO_MODER12_N     , 24
.EQU  GPIO_MODER13_N     , 26
.EQU  GPIO_MODER14_N     , 28
.EQU  GPIO_MODER15_N     , 30
.EQU  GPIO_MODER_INPUT   , 0x00          @ Вход
.EQU  GPIO_MODER_GENERAL_OUT, 0x01       @ Выход
.EQU  GPIO_MODER_ALT_MODE, 0x02          @ Альтернативные функции
.EQU  GPIO_MODER_ANALOG  , 0x03          @ Аналоговый ввод/вывод
@.END

@ Описание битов настройки
@.item GPIO_OTYPER
.EQU  GPIO_OTYPER_PP     , 0x00          @ Push-Pull
.EQU  GPIO_OTYPER_OD     , 0x01          @ Open Drain
@.END

@ Описание битов настройки
@.item GPIO_OSPEEDR
.EQU  GPIOA_OSPEEDR_RST_VAL, 0x0C000000    @ Port A reset value
.EQU  GPIOB_OSPEEDR_RST_VAL, 0x000000C0    @ Port B reset value
.EQU  GPIO_OSPEEDR0_N    , 0
.EQU  GPIO_OSPEEDR1_N    , 2
.EQU  GPIO_OSPEEDR2_N    , 4
.EQU  GPIO_OSPEEDR3_N    , 6
.EQU  GPIO_OSPEEDR4_N    , 8
.EQU  GPIO_OSPEEDR5_N    , 10
.EQU  GPIO_OSPEEDR6_N    , 12
.EQU  GPIO_OSPEEDR7_N    , 14
.EQU  GPIO_OSPEEDR8_N    , 16
.EQU  GPIO_OSPEEDR9_N    , 18
.EQU  GPIO_OSPEEDR10_N   , 20
.EQU  GPIO_OSPEEDR11_N   , 22
.EQU  GPIO_OSPEEDR12_N   , 24
.EQU  GPIO_OSPEEDR13_N   , 26
.EQU  GPIO_OSPEEDR14_N   , 28
.EQU  GPIO_OSPEEDR15_N   , 30
.EQU  GPIO_OSPEEDR_LOW_SPEED, 0x00       @ LOW SPEED
.EQU  GPIO_OSPEEDR_MEDIUM_SPEED, 0x01    @ MEDIUM SPEED
.EQU  GPIO_OSPEEDR_HIGH_SPEED, 0x02      @ HIGH SPEED
.EQU  GPIO_OSPEEDR_VERY_HIGH_SPEED, 0x03    @ VERY HIGH SPEED
@.END

@ Описание битов настройки
@.item GPIO_PUPDR
.EQU  GPIOA_PUPDR0_RST_VAL  , 0x64000000
.EQU  GPIOB_PUPDR0_RST_VAL  , 0x00000100
.EQU  GPIO_PUPDR0_N    , 0
.EQU  GPIO_PUPDR1_N    , 2
.EQU  GPIO_PUPDR2_N    , 4
.EQU  GPIO_PUPDR3_N    , 6
.EQU  GPIO_PUPDR4_N    , 8
.EQU  GPIO_PUPDR5_N    , 10
.EQU  GPIO_PUPDR6_N    , 12
.EQU  GPIO_PUPDR7_N    , 14
.EQU  GPIO_PUPDR8_N    , 16
.EQU  GPIO_PUPDR9_N    , 18
.EQU  GPIO_PUPDR10_N   , 20
.EQU  GPIO_PUPDR11_N   , 22
.EQU  GPIO_PUPDR12_N   , 24
.EQU  GPIO_PUPDR13_N   , 26
.EQU  GPIO_PUPDR14_N   , 28
.EQU  GPIO_PUPDR15_N   , 30
.EQU  GPIO_PUPDR_NPU_NPD , 0x00          @ Нет подтяжки
.EQU  GPIO_PUPDR_PU      , 0x01          @ Подтяжка к питанию
.EQU  GPIO_PUPDR_PD      , 0x02          @ Подтяжка к земле
.EQU  GPIO_PUPDR_RESERVED, 0x03
@.END

@ Описание битов настройки
@.item GPIO_AFRH GPIO_AFRL
.equ GPIO_AFR_0                    , 0x00  @ SYS
.equ GPIO_AFR_1                    , 0x01  @ TIM1_2
.equ GPIO_AFR_2                    , 0x02  @ TIM3_4_5
.equ GPIO_AFR_3                    , 0x03  @ TIM8_9_10_11
.equ GPIO_AFR_4                    , 0x04  @ I2C1_2_3
.equ GPIO_AFR_5                    , 0x05  @ SPI1_2_I2S2_ext
.equ GPIO_AFR_6                    , 0x06  @ SPI3_I2S2ext_3
.equ GPIO_AFR_7                    , 0x07  @ USART1_2_3_I2S3ext
.equ GPIO_AFR_8                    , 0x08  @ UART4_5_USART6
.equ GPIO_AFR_9                    , 0x09  @ CAN1_2_TIM12_13_14
.equ GPIO_AFR_A                    , 0x0A  @ OTG_FS_OTG_HS
.equ GPIO_AFR_B                    , 0x0B  @ ETH
.equ GPIO_AFR_C                    , 0x0C  @ FSMC_SDIO_OTG_FS
.equ GPIO_AFR_D                    , 0x0D  @ DCMI
.equ GPIO_AFR_E                    , 0x0E
.equ GPIO_AFR_F                    , 0x0F  @ EVENTOUT

