@GNU AS
@.CharSet=CP1251 (Cyrillic)
@.desc type=module
@ +------------------------------------------------------------------+
@ |                         Константы GPIO                           |
@ |                            STM32F303                             |
@ +------------------------------------------------------------------+
@.enddesc

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

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


@ регистры 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


@.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

@ Описание битов настройки
@.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 @ Аналоговый ввод/вывод


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


@ Описание битов настройки
@.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


@ Описание битов настройки
@.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


@ Описание битов настройки
@.item GPIO_AFRH GPIO_AFRL
.equ GPIO_AFR_0                    , 0x00  @ SYS
.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  @

