@GNU AS
@.CharSet=CP1251 (Cyrillic)
@.desc type=module
@ +------------------------------------------------------------------+
@ |                         Определения GPIO                         |
@ |                   STM32L100xxx  UFPFPN48 pinout                  |
@ +------------------------------------------------------------------+
@.enddesc

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

@.item AHBPERIPH_BASE
.equ GPIO                  , AHBPERIPH_BASE + 0x0000 @ GPIO Controls Registers
@.end

@.item GPIO
.equ GPIOA_BASE                    , AHBPERIPH_BASE + 0x0000
.equ GPIOB_BASE                    , AHBPERIPH_BASE + 0x0400
.equ GPIOC_BASE                    , AHBPERIPH_BASE + 0x0800
@ .equ GPIOD_BASE                    , AHBPERIPH_BASE + 0x0C00
@ .equ GPIOE_BASE                    , AHBPERIPH_BASE + 0x1000
.equ GPIOH_BASE                    , AHBPERIPH_BASE + 0x1400
@ .equ GPIOF_BASE                    , AHBPERIPH_BASE + 0x1800
@ .equ GPIOG_BASE                    , AHBPERIPH_BASE + 0x1C00
.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 GPIOH                         , PERIPH_BASE + GPIOH_BASE
@ .equ GPIOF                         , PERIPH_BASE + GPIOF_BASE
@ .equ GPIOG                         , PERIPH_BASE + GPIOG_BASE
@.end

@.item GPIOA GPIOB GPIOC GPIOD GPIOE GPIOF GPIOG GPIOA_BASE GPIOB_BASE GPIOC_BASE GPIOD_BASE GPIOE_BASE GPIOF_BASE GPIOG_BASE
.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 bit reset register (GPIOx_BRR)
@.end

@.item GPIO_MODER
.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  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  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  @ TIM2
.equ GPIO_AFR_2                    , 0x02  @ TIM3_4
.equ GPIO_AFR_3                    , 0x03  @ TIM9_10_11
.equ GPIO_AFR_4                    , 0x04  @ I2C1_2
.equ GPIO_AFR_5                    , 0x05  @ SPI1_2
.equ GPIO_AFR_6                    , 0x06  @ SPI3
.equ GPIO_AFR_7                    , 0x07  @ USART1_2_3
.equ GPIO_AFR_8                    , 0x08  @ UART4_5
.equ GPIO_AFR_9                    , 0x09  @
.equ GPIO_AFR_A                    , 0x0A  @ OTG_FS_OTG_HS
.equ GPIO_AFR_B                    , 0x0B  @ LCD
.equ GPIO_AFR_C                    , 0x0C  @
.equ GPIO_AFR_D                    , 0x0D  @
.equ GPIO_AFR_E                    , 0x0E  @ CPRI
.equ GPIO_AFR_F                    , 0x0F  @ EVENTOUT
@.end
