@GNU AS
@.CHARSET =CP1251 ( Cyrillic )
@.DESC     type=module
@ +------------------------------------------------------------------+
@ |                         Константы GPIO                           |
@ |                            STM32F303                             |
@ +------------------------------------------------------------------+
@.ENDDESC

.INCLUDE   "/src/inc/base.inc"

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

@ регистры gpio для использования в том числе в bit band
@.ITEM     GPIO
.EQU  GPIOA_BASE                   , GPIO + 0x0000
.EQU  GPIOB_BASE                   , GPIO + 0x0400
.EQU  GPIOC_BASE                   , GPIO + 0x0800
.EQU  GPIOD_BASE                   , GPIO + 0x0C00
.EQU  GPIOE_BASE                   , GPIO + 0x1000
.EQU  GPIOF_BASE                   , GPIO + 0x1400
.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
@.END

@.ITEM     GPIOA GPIOB GPIOC GPIOD GPIOE GPIOF
.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
.EQU  GPIO_BRR                     , 0x28    @ GPIO port bit reset register
@.END

@ Описание битов настройки
@.ITEM     GPIO_MODER
.EQU  GPIO_MODER_A_RST_VAL         , 0xA8000000
.EQU  GPIO_MODER_B_RST_VAL         , 0x00000280
.EQU  GPIO_MODER_0_N               , 0
.EQU  GPIO_MODER_1_N               , 2
.EQU  GPIO_MODER_2_N               , 4
.EQU  GPIO_MODER_3_N               , 6
.EQU  GPIO_MODER_4_N               , 8
.EQU  GPIO_MODER_5_N               , 10
.EQU  GPIO_MODER_6_N               , 12
.EQU  GPIO_MODER_7_N               , 14
.EQU  GPIO_MODER_8_N               , 16
.EQU  GPIO_MODER_9_N               , 18
.EQU  GPIO_MODER_10_N              , 20
.EQU  GPIO_MODER_11_N              , 22
.EQU  GPIO_MODER_12_N              , 24
.EQU  GPIO_MODER_13_N              , 26
.EQU  GPIO_MODER_14_N              , 28
.EQU  GPIO_MODER_15_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
.EQU  GPIO_OTYPER_0_N              , 0    @ Bits 15:0 OTYPER_y: Port x configuration bits (y = 0..15)
.EQU  GPIO_OTYPER_1_N              , 1
.EQU  GPIO_OTYPER_2_N              , 2
.EQU  GPIO_OTYPER_3_N              , 3
.EQU  GPIO_OTYPER_4_N              , 4
.EQU  GPIO_OTYPER_5_N              , 5
.EQU  GPIO_OTYPER_6_N              , 6
.EQU  GPIO_OTYPER_7_N              , 7
.EQU  GPIO_OTYPER_8_N              , 8
.EQU  GPIO_OTYPER_9_N              , 9
.EQU  GPIO_OTYPER_10_N             , 10
.EQU  GPIO_OTYPER_11_N             , 11
.EQU  GPIO_OTYPER_12_N             , 12
.EQU  GPIO_OTYPER_13_N             , 13
.EQU  GPIO_OTYPER_14_N             , 14
.EQU  GPIO_OTYPER_15_N             , 15
.EQU  GPIO_OTYPER_PP               , 0x00    @ Push-Pull
.EQU  GPIO_OTYPER_OD               , 0x01    @ Open Drain
@.END

@ Описание битов настройки
@.ITEM     GPIO_OSPEEDR
.EQU  GPIO_OSPEEDR_A_RST_VAL       , 0x0C000000
.EQU  GPIO_OSPEEDR_B_RST_VAL       , 0x000000C0
.EQU  GPIO_OSPEEDR_0_N             , 0
.EQU  GPIO_OSPEEDR_1_N             , 2
.EQU  GPIO_OSPEEDR_2_N             , 4
.EQU  GPIO_OSPEEDR_3_N             , 6
.EQU  GPIO_OSPEEDR_4_N             , 8
.EQU  GPIO_OSPEEDR_5_N             , 10
.EQU  GPIO_OSPEEDR_6_N             , 12
.EQU  GPIO_OSPEEDR_7_N             , 14
.EQU  GPIO_OSPEEDR_8_N             , 16
.EQU  GPIO_OSPEEDR_9_N             , 18
.EQU  GPIO_OSPEEDR_10_N            , 20
.EQU  GPIO_OSPEEDR_11_N            , 22
.EQU  GPIO_OSPEEDR_12_N            , 24
.EQU  GPIO_OSPEEDR_13_N            , 26
.EQU  GPIO_OSPEEDR_14_N            , 28
.EQU  GPIO_OSPEEDR_15_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  GPIO_PUPDR_A_RST_VAL         , 0x64000000
.EQU  GPIO_PUPDR_B_RST_VAL         , 0x00000100
.EQU  GPIO_PUPDR_0_N               , 0
.EQU  GPIO_PUPDR_1_N               , 2
.EQU  GPIO_PUPDR_2_N               , 4
.EQU  GPIO_PUPDR_3_N               , 6
.EQU  GPIO_PUPDR_4_N               , 8
.EQU  GPIO_PUPDR_5_N               , 10
.EQU  GPIO_PUPDR_6_N               , 12
.EQU  GPIO_PUPDR_7_N               , 14
.EQU  GPIO_PUPDR_8_N               , 16
.EQU  GPIO_PUPDR_9_N               , 18
.EQU  GPIO_PUPDR_10_N              , 20
.EQU  GPIO_PUPDR_11_N              , 22
.EQU  GPIO_PUPDR_12_N              , 24
.EQU  GPIO_PUPDR_13_N              , 26
.EQU  GPIO_PUPDR_14_N              , 28
.EQU  GPIO_PUPDR_15_N              , 30
.EQU  GPIO_PUPDR_NPU_NPD           , 0x00    @ Нет подтяжки
.EQU  GPIO_PUPDR_PU                , 0x01    @ Подтяжка к питанию
.EQU  GPIO_PUPDR_PD                , 0x02    @ Подтяжка к земле
.EQU  GPIO_PUPDR_RESERVED          , 0x03    @ 11: Reserved
@.END

@ Описание битов настройки
@.ITEM     GPIO_IDR
.EQU  GPIO_IDR_RST_VAL             , 0x00000000
.EQU  GPIO_IDR_0_N                 , 0
.EQU  GPIO_IDR_1_N                 , 1
.EQU  GPIO_IDR_2_N                 , 2
.EQU  GPIO_IDR_3_N                 , 3
.EQU  GPIO_IDR_4_N                 , 4
.EQU  GPIO_IDR_5_N                 , 5
.EQU  GPIO_IDR_6_N                 , 6
.EQU  GPIO_IDR_7_N                 , 7
.EQU  GPIO_IDR_8_N                 , 8
.EQU  GPIO_IDR_9_N                 , 9
.EQU  GPIO_IDR_10_N                , 10
.EQU  GPIO_IDR_11_N                , 11
.EQU  GPIO_IDR_12_N                , 12
.EQU  GPIO_IDR_13_N                , 13
.EQU  GPIO_IDR_14_N                , 14
.EQU  GPIO_IDR_15_N                , 15
@.END

@ Описание битов настройки
@.ITEM     GPIO_ODR
.EQU  GPIO_ODR_RST_VAL             , 0x00000000
.EQU  GPIO_ODR_0_N                 , 0
.EQU  GPIO_ODR_1_N                 , 1
.EQU  GPIO_ODR_2_N                 , 2
.EQU  GPIO_ODR_3_N                 , 3
.EQU  GPIO_ODR_4_N                 , 4
.EQU  GPIO_ODR_5_N                 , 5
.EQU  GPIO_ODR_6_N                 , 6
.EQU  GPIO_ODR_7_N                 , 7
.EQU  GPIO_ODR_8_N                 , 8
.EQU  GPIO_ODR_9_N                 , 9
.EQU  GPIO_ODR_10_N                , 10
.EQU  GPIO_ODR_11_N                , 11
.EQU  GPIO_ODR_12_N                , 12
.EQU  GPIO_ODR_13_N                , 13
.EQU  GPIO_ODR_14_N                , 14
.EQU  GPIO_ODR_15_N                , 15
@.END

@ Описание битов настройки
@.ITEM     GPIO_BSRR
.EQU  GPIO_BSRR_RST_VAL            , 0x00000000
.EQU  GPIO_BS_0_N                  , 0    @ Bits 15:0 BSy: Port x set bit y (y= 0..15)
.EQU  GPIO_BS_1_N                  , 1
.EQU  GPIO_BS_2_N                  , 2
.EQU  GPIO_BS_3_N                  , 3
.EQU  GPIO_BS_4_N                  , 4
.EQU  GPIO_BS_5_N                  , 5
.EQU  GPIO_BS_6_N                  , 6
.EQU  GPIO_BS_7_N                  , 7
.EQU  GPIO_BS_8_N                  , 8
.EQU  GPIO_BS_9_N                  , 9
.EQU  GPIO_BS_10_N                 , 10
.EQU  GPIO_BS_11_N                 , 11
.EQU  GPIO_BS_12_N                 , 12
.EQU  GPIO_BS_13_N                 , 13
.EQU  GPIO_BS_14_N                 , 14
.EQU  GPIO_BS_15_N                 , 15
.EQU  GPIO_BR_0_N                  , 16    @ Bits 31:16 BRy: Port x reset bit y (y = 0..15)
.EQU  GPIO_BR_1_N                  , 17
.EQU  GPIO_BR_2_N                  , 18
.EQU  GPIO_BR_3_N                  , 19
.EQU  GPIO_BR_4_N                  , 20
.EQU  GPIO_BR_5_N                  , 21
.EQU  GPIO_BR_6_N                  , 22
.EQU  GPIO_BR_7_N                  , 23
.EQU  GPIO_BR_8_N                  , 24
.EQU  GPIO_BR_9_N                  , 25
.EQU  GPIO_BR_10_N                 , 26
.EQU  GPIO_BR_11_N                 , 27
.EQU  GPIO_BR_12_N                 , 28
.EQU  GPIO_BR_13_N                 , 29
.EQU  GPIO_BR_14_N                 , 30
.EQU  GPIO_BR_15_N                 , 31
@.END

@ Описание битов настройки
@.ITEM     GPIO_LCKR
.EQU  GPIO_LCKR_RST_VAL            , 0x00000000
.EQU  GPIO_LCK_0_N                 , 0    @ Bits 15:0 LCKy: Port x lock bit y (y= 0..15)
.EQU  GPIO_LCK_1_N                 , 1
.EQU  GPIO_LCK_2_N                 , 2
.EQU  GPIO_LCK_3_N                 , 3
.EQU  GPIO_LCK_4_N                 , 4
.EQU  GPIO_LCK_5_N                 , 5
.EQU  GPIO_LCK_6_N                 , 6
.EQU  GPIO_LCK_7_N                 , 7
.EQU  GPIO_LCK_8_N                 , 8
.EQU  GPIO_LCK_9_N                 , 9
.EQU  GPIO_LCK_10_N                , 10
.EQU  GPIO_LCK_11_N                , 11
.EQU  GPIO_LCK_12_N                , 12
.EQU  GPIO_LCK_13_N                , 13
.EQU  GPIO_LCK_14_N                , 14
.EQU  GPIO_LCK_15_N                , 15
.EQU  GPIO_LCK_16_N                , 16    @ Bit 16 LCKK: Lock key

@ Описание битов настройки
@.ITEM     GPIO_AFRL
.EQU  GPIO_GPIO_AFRL_RST_VAL       , 0x00000000
.EQU  GPIO_AFRL_0_N                , 0    @ Bits 31:0 AFRy[3:0]: Alternate function selection for port x pin y (y = 0..7)
.EQU  GPIO_AFRL_1_N                , 4
.EQU  GPIO_AFRL_2_N                , 8
.EQU  GPIO_AFRL_3_N                , 12
.EQU  GPIO_AFRL_4_N                , 16
.EQU  GPIO_AFRL_5_N                , 20
.EQU  GPIO_AFRL_6_N                , 24
.EQU  GPIO_AFRL_7_N                , 28
.EQU  GPIO_AFR_0                   , 0x00    @ These bits are written by software to configure alternate function I/Os
.EQU  GPIO_AFR_1                   , 0x01    @
.EQU  GPIO_AFR_2                   , 0x02    @
.EQU  GPIO_AFR_3                   , 0x03    @
.EQU  GPIO_AFR_4                   , 0x04    @
.EQU  GPIO_AFR_5                   , 0x05    @
.EQU  GPIO_AFR_6                   , 0x06    @
.EQU  GPIO_AFR_7                   , 0x07    @
.EQU  GPIO_AFR_8                   , 0x08    @
.EQU  GPIO_AFR_9                   , 0x09    @
.EQU  GPIO_AFR_A                   , 0x0A    @
.EQU  GPIO_AFR_B                   , 0x0B    @
.EQU  GPIO_AFR_C                   , 0x0C    @
.EQU  GPIO_AFR_D                   , 0x0D    @
.EQU  GPIO_AFR_E                   , 0x0E    @
.EQU  GPIO_AFR_F                   , 0x0F    @
@.END

@ Описание битов настройки
@.ITEM     GPIO_AFRH
.EQU  GPIO_GPIO_AFRH_RST_VAL       , 0x00000000
.EQU  GPIO_AFRH_0_N                , 0    @ Bits 31:0 AFRy[3:0]: Alternate function selection for port x pin y (y = 0..7)
.EQU  GPIO_AFRH_1_N                , 4
.EQU  GPIO_AFRH_2_N                , 8
.EQU  GPIO_AFRH_3_N                , 12
.EQU  GPIO_AFRH_4_N                , 16
.EQU  GPIO_AFRH_5_N                , 20
.EQU  GPIO_AFRH_6_N                , 24
.EQU  GPIO_AFRH_7_N                , 28
.EQU  GPIO_AFR_0                   , 0x00    @ These bits are written by software to configure alternate function I/Os
.EQU  GPIO_AFR_1                   , 0x01    @
.EQU  GPIO_AFR_2                   , 0x02    @
.EQU  GPIO_AFR_3                   , 0x03    @
.EQU  GPIO_AFR_4                   , 0x04    @
.EQU  GPIO_AFR_5                   , 0x05    @
.EQU  GPIO_AFR_6                   , 0x06    @
.EQU  GPIO_AFR_7                   , 0x07    @
.EQU  GPIO_AFR_8                   , 0x08    @
.EQU  GPIO_AFR_9                   , 0x09    @
.EQU  GPIO_AFR_A                   , 0x0A    @
.EQU  GPIO_AFR_B                   , 0x0B    @
.EQU  GPIO_AFR_C                   , 0x0C    @
.EQU  GPIO_AFR_D                   , 0x0D    @
.EQU  GPIO_AFR_E                   , 0x0E    @
.EQU  GPIO_AFR_F                   , 0x0F    @
@.END

@ Описание битов настройки     These bits are write-only.
@.ITEM     GPIO_BRR
.EQU  GPIO_BRR_RST_VAL             , 0x00000000
.EQU  GPIO_BRR_0_N                 , 0    @ Bits 15:0 BRy: Port x Reset bit y (y= 0..15)
.EQU  GPIO_BRR_1_N                 , 1    @ These bits are write-only. A read to these bits returns the value 0x0000
.EQU  GPIO_BRR_2_N                 , 2
.EQU  GPIO_BRR_3_N                 , 3
.EQU  GPIO_BRR_4_N                 , 4
.EQU  GPIO_BRR_5_N                 , 5
.EQU  GPIO_BRR_6_N                 , 6
.EQU  GPIO_BRR_7_N                 , 7
.EQU  GPIO_BRR_8_N                 , 8
.EQU  GPIO_BRR_9_N                 , 9
.EQU  GPIO_BRR_10_N                , 10
.EQU  GPIO_BRR_11_N                , 11
.EQU  GPIO_BRR_12_N                , 12
.EQU  GPIO_BRR_13_N                , 13
.EQU  GPIO_BRR_14_N                , 14
.EQU  GPIO_BRR_15_N                , 15
.EQU  GPIO_BRR_RESET               , 1    @ 1: Reset the corresponding ODx bit
@.END



