@GNU AS
@.CharSet=CP1251 (Cyrillic)
@.desc type=module
@ +------------------------------------------------------------------+
@ |                         Константы GPIO                           |
@ |               для STM32F42xxB/C и STM32F43xxD/E                  |
@ +------------------------------------------------------------------+
@.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_RST_VAL     , 0x00000000    @ Reset value: 0x0000 0000
.EQU  GPIO_OTYPER_OT1_N       , 1
.EQU  GPIO_OTYPER_OT2_N       , 2
.EQU  GPIO_OTYPER_OT3_N       , 3
.EQU  GPIO_OTYPER_OT4_N       , 4
.EQU  GPIO_OTYPER_OT5_N       , 5
.EQU  GPIO_OTYPER_OT6_N       , 6
.EQU  GPIO_OTYPER_OT7_N       , 7
.EQU  GPIO_OTYPER_OT8_N       , 8
.EQU  GPIO_OTYPER_OT9_N       , 9
.EQU  GPIO_OTYPER_OT10_N      , 10
.EQU  GPIO_OTYPER_OT11_N      , 11
.EQU  GPIO_OTYPER_OT12_N      , 12
.EQU  GPIO_OTYPER_OT13_N      , 13
.EQU  GPIO_OTYPER_OT14_N      , 14
.EQU  GPIO_OTYPER_OT15_N      , 15
.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_PUPDR_RST_VAL     , 0x64000000    @ Port A reset value
.EQU  GPIOB_PUPDR_RST_VAL     , 0x00000100    @ Port B reset value
.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_IDR
.EQU  GPIO_IDR_RST_VAL        , 0x00000000    @ Reset value: 0x0000 0000
.EQU  GPIO_IDR_IDR1_N         , 1
.EQU  GPIO_IDR_IDR2_N         , 2
.EQU  GPIO_IDR_IDR3_N         , 3
.EQU  GPIO_IDR_IDR4_N         , 4
.EQU  GPIO_IDR_IDR5_N         , 5
.EQU  GPIO_IDR_IDR6_N         , 6
.EQU  GPIO_IDR_IDR7_N         , 7
.EQU  GPIO_IDR_IDR8_N         , 8
.EQU  GPIO_IDR_IDR9_N         , 9
.EQU  GPIO_IDR_IDR10_N        , 10
.EQU  GPIO_IDR_IDR11_N        , 11
.EQU  GPIO_IDR_IDR12_N        , 12
.EQU  GPIO_IDR_IDR13_N        , 13
.EQU  GPIO_IDR_IDR14_N        , 14
.EQU  GPIO_IDR_IDR15_N        , 15
@.END

@ Описание битов настройки
@.ITEM     GPIO_ODR
.EQU  GPIO_ODR_RST_VAL        , 0x00000000    @ Reset value: 0x0000 0000
.EQU  GPIO_ODR_ODR1_N         , 1
.EQU  GPIO_ODR_ODR2_N         , 2
.EQU  GPIO_ODR_ODR3_N         , 3
.EQU  GPIO_ODR_ODR4_N         , 4
.EQU  GPIO_ODR_ODR5_N         , 5
.EQU  GPIO_ODR_ODR6_N         , 6
.EQU  GPIO_ODR_ODR7_N         , 7
.EQU  GPIO_ODR_ODR8_N         , 8
.EQU  GPIO_ODR_ODR9_N         , 9
.EQU  GPIO_ODR_ODR10_N        , 10
.EQU  GPIO_ODR_ODR11_N        , 11
.EQU  GPIO_ODR_ODR12_N        , 12
.EQU  GPIO_ODR_ODR13_N        , 13
.EQU  GPIO_ODR_ODR14_N        , 14
.EQU  GPIO_ODR_ODR15_N        , 15
@.END

@ Описание битов настройки
@.ITEM     GPIO_BSRR
.EQU  GPIO_BSRR_RST_VAL       , 0x00000000    @ Reset value: 0x0000 0000
.EQU  GPIO_BSRR_BS0_N         , 0
.EQU  GPIO_BSRR_BS1_N         , 1
.EQU  GPIO_BSRR_BS2_N         , 2
.EQU  GPIO_BSRR_BS3_N         , 3
.EQU  GPIO_BSRR_BS4_N         , 4
.EQU  GPIO_BSRR_BS5_N         , 5
.EQU  GPIO_BSRR_BS6_N         , 6
.EQU  GPIO_BSRR_BS7_N         , 7
.EQU  GPIO_BSRR_BS8_N         , 8
.EQU  GPIO_BSRR_BS9_N         , 9
.EQU  GPIO_BSRR_BS10_N        , 10
.EQU  GPIO_BSRR_BS11_N        , 11
.EQU  GPIO_BSRR_BS12_N        , 12
.EQU  GPIO_BSRR_BS13_N        , 13
.EQU  GPIO_BSRR_BS14_N        , 14
.EQU  GPIO_BSRR_BS15_N        , 15
.EQU  GPIO_BSRR_BR0_N         , 16
.EQU  GPIO_BSRR_BR1_N         , 17
.EQU  GPIO_BSRR_BR2_N         , 18
.EQU  GPIO_BSRR_BR3_N         , 19
.EQU  GPIO_BSRR_BR4_N         , 20
.EQU  GPIO_BSRR_BR5_N         , 21
.EQU  GPIO_BSRR_BR6_N         , 22
.EQU  GPIO_BSRR_BR7_N         , 23
.EQU  GPIO_BSRR_BR8_N         , 24
.EQU  GPIO_BSRR_BR9_N         , 25
.EQU  GPIO_BSRR_BR10_N        , 26
.EQU  GPIO_BSRR_BR11_N        , 27
.EQU  GPIO_BSRR_BR12_N        , 28
.EQU  GPIO_BSRR_BR13_N        , 29
.EQU  GPIO_BSRR_BR14_N        , 30
.EQU  GPIO_BSRR_BR15_N        , 31
@.END

@ Описание битов настройки
@.ITEM     GPIO_LCKR
.EQU  GPIO_LCKR_RST_VAL       , 0x00000000    @ Reset value: 0x0000 0000
.EQU  GPIO_LCKR_LCK1_N        , 1
.EQU  GPIO_LCKR_LCK2_N        , 2
.EQU  GPIO_LCKR_LCK3_N        , 3
.EQU  GPIO_LCKR_LCK4_N        , 4
.EQU  GPIO_LCKR_LCK5_N        , 5
.EQU  GPIO_LCKR_LCK6_N        , 6
.EQU  GPIO_LCKR_LCK7_N        , 7
.EQU  GPIO_LCKR_LCK8_N        , 8
.EQU  GPIO_LCKR_LCK9_N        , 9
.EQU  GPIO_LCKR_LCK10_N       , 10
.EQU  GPIO_LCKR_LCK11_N       , 11
.EQU  GPIO_LCKR_LCK12_N       , 12
.EQU  GPIO_LCKR_LCK13_N       , 13
.EQU  GPIO_LCKR_LCK14_N       , 14
.EQU  GPIO_LCKR_LCK15_N       , 15
@.END

@ Описание битов настройки
@.ITEM     GPIO_AFRH GPIO_AFRL
.EQU  GPIO_AFR_RST_VAL        , 0x00000000    @ Reset value
.EQU  GPIO_AFR_0              , 0x00          @ AF0 (system)
.EQU  GPIO_AFR_1              , 0x01          @ AF1 (TIM1/TIM2)
.EQU  GPIO_AFR_2              , 0x02          @ AF2 (TIM3..5)
.EQU  GPIO_AFR_3              , 0x03          @ AF3 (TIM8..11)
.EQU  GPIO_AFR_4              , 0x04          @ AF4 (I2C1..3)
.EQU  GPIO_AFR_5              , 0x05          @ AF5 (SPI1/2/3/4/5/6)
.EQU  GPIO_AFR_6              , 0x06          @ AF6 (SPI2/3/SAI1)
.EQU  GPIO_AFR_7              , 0x07          @ AF7 (USART1..3)
.EQU  GPIO_AFR_8              , 0x08          @ AF8 (USART4..8)
.EQU  GPIO_AFR_9              , 0x09          @ AF9 (CAN1/CAN2, LTDC, TIM12..14)
.EQU  GPIO_AFR_A              , 0x0A          @ AF10 (OTG_FS, OTG_HS)
.EQU  GPIO_AFR_B              , 0x0B          @ AF11 (ETH)
.EQU  GPIO_AFR_C              , 0x0C          @ AF12 (FMC, SDIO, OTG_HS)
.EQU  GPIO_AFR_D              , 0x0D          @ AF13 (DCMI)
.EQU  GPIO_AFR_E              , 0x0E          @ AF14 (LTDC)
.EQU  GPIO_AFR_F              , 0x0F          @ AF15 (EVENTOUT)
@.END
