Bootstrap and definition library for programming STM32L100RC in ARM assembler. This was a class project to learn ARM assembly
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
stm32l100-asm-bootstrap/lib/INI_BITS_GPIO.s

240 lines
8.5 KiB

;********************************************************************************
; SOUBOR : INI_BITS_GPIO.S
; AUTOR : Petr Dousa, Ondrej Hruska
; DATUM : 10/2015
; POPIS : Bitove masky ridicich registru pro GPIO (I/O brany)
;
; Toto je soucast knihovny pro STM32L100 vyvijene na Katedre mereni FEL CVUT.
;********************************************************************************
;****************************************************************************
;
; General Purpose IOs (GPIO)
;
;****************************************************************************
; Short pin masks. Valid for OTYPER, IDR and ODR.
GPIO0 EQU 0x00000001
GPIO1 EQU 0x00000002
GPIO2 EQU 0x00000004
GPIO3 EQU 0x00000008
GPIO4 EQU 0x00000010
GPIO5 EQU 0x00000020
GPIO6 EQU 0x00000040
GPIO7 EQU 0x00000080
GPIO8 EQU 0x00000100
GPIO9 EQU 0x00000200
GPIO10 EQU 0x00000400
GPIO11 EQU 0x00000800
GPIO12 EQU 0x00001000
GPIO13 EQU 0x00002000
GPIO14 EQU 0x00004000
GPIO15 EQU 0x00008000
; OTYPER pattern masks - use as (GPIO_OTYPER_6 & GPIO_OTYPER_OD)
GPIO_OTYPER_PP EQU 0x00000000
GPIO_OTYPER_OD EQU 0xFFFFFFFF
; For completenes, aliases also for OTYPER, ODR and IDR
GPIO_OTYPER_0 EQU 0x00000001
GPIO_OTYPER_1 EQU 0x00000002
GPIO_OTYPER_2 EQU 0x00000004
GPIO_OTYPER_3 EQU 0x00000008
GPIO_OTYPER_4 EQU 0x00000010
GPIO_OTYPER_5 EQU 0x00000020
GPIO_OTYPER_6 EQU 0x00000040
GPIO_OTYPER_7 EQU 0x00000080
GPIO_OTYPER_8 EQU 0x00000100
GPIO_OTYPER_9 EQU 0x00000200
GPIO_OTYPER_10 EQU 0x00000400
GPIO_OTYPER_11 EQU 0x00000800
GPIO_OTYPER_12 EQU 0x00001000
GPIO_OTYPER_13 EQU 0x00002000
GPIO_OTYPER_14 EQU 0x00004000
GPIO_OTYPER_15 EQU 0x00008000
GPIO_ODR_0 EQU 0x00000001
GPIO_ODR_1 EQU 0x00000002
GPIO_ODR_2 EQU 0x00000004
GPIO_ODR_3 EQU 0x00000008
GPIO_ODR_4 EQU 0x00000010
GPIO_ODR_5 EQU 0x00000020
GPIO_ODR_6 EQU 0x00000040
GPIO_ODR_7 EQU 0x00000080
GPIO_ODR_8 EQU 0x00000100
GPIO_ODR_9 EQU 0x00000200
GPIO_ODR_10 EQU 0x00000400
GPIO_ODR_11 EQU 0x00000800
GPIO_ODR_12 EQU 0x00001000
GPIO_ODR_13 EQU 0x00002000
GPIO_ODR_14 EQU 0x00004000
GPIO_ODR_15 EQU 0x00008000
GPIO_IDR_0 EQU 0x00000001
GPIO_IDR_1 EQU 0x00000002
GPIO_IDR_2 EQU 0x00000004
GPIO_IDR_3 EQU 0x00000008
GPIO_IDR_4 EQU 0x00000010
GPIO_IDR_5 EQU 0x00000020
GPIO_IDR_6 EQU 0x00000040
GPIO_IDR_7 EQU 0x00000080
GPIO_IDR_8 EQU 0x00000100
GPIO_IDR_9 EQU 0x00000200
GPIO_IDR_10 EQU 0x00000400
GPIO_IDR_11 EQU 0x00000800
GPIO_IDR_12 EQU 0x00001000
GPIO_IDR_13 EQU 0x00002000
GPIO_IDR_14 EQU 0x00004000
GPIO_IDR_15 EQU 0x00008000
;****************** Bit definition for GPIO_MODER register ****************
; pattern masks. Use as: (GPIO_MODER_0 & GPIO_MODER_OUTPUT)
GPIO_MODER_INPUT EQU 0x00000000
GPIO_MODER_OUTPUT EQU 0x55555555
GPIO_MODER_AF EQU 0xAAAAAAAA
GPIO_MODER_ANALOG EQU 0xFFFFFFFF
GPIO_MODER_0 EQU 0x00000003
GPIO_MODER_1 EQU 0x0000000C
GPIO_MODER_2 EQU 0x00000030
GPIO_MODER_3 EQU 0x000000C0
GPIO_MODER_4 EQU 0x00000300
GPIO_MODER_5 EQU 0x00000C00
GPIO_MODER_6 EQU 0x00003000
GPIO_MODER_7 EQU 0x0000C000
GPIO_MODER_8 EQU 0x00030000
GPIO_MODER_9 EQU 0x000C0000
GPIO_MODER_10 EQU 0x00300000
GPIO_MODER_11 EQU 0x00C00000
GPIO_MODER_12 EQU 0x03000000
GPIO_MODER_13 EQU 0x0C000000
GPIO_MODER_14 EQU 0x30000000
GPIO_MODER_15 EQU 0xC0000000
;****************** Bit definition for GPIO_OSPEEDR register **************
; pattern masks. Use as: (GPIO_OSPEEDR_2 & GPIO_OSPEEDR_LOW)
GPIO_OSPEEDR_LOW EQU 0x00000000
GPIO_OSPEEDR_MEDIUM EQU 0x55555555
GPIO_OSPEEDR_HIGH EQU 0xFFFFFFFF
GPIO_OSPEEDR_0 EQU (0x00000003)
GPIO_OSPEEDR_1 EQU (0x0000000C)
GPIO_OSPEEDR_2 EQU (0x00000030)
GPIO_OSPEEDR_3 EQU (0x000000C0)
GPIO_OSPEEDR_4 EQU (0x00000300)
GPIO_OSPEEDR_5 EQU (0x00000C00)
GPIO_OSPEEDR_6 EQU (0x00003000)
GPIO_OSPEEDR_7 EQU (0x0000C000)
GPIO_OSPEEDR_8 EQU (0x00030000)
GPIO_OSPEEDR_9 EQU (0x000C0000)
GPIO_OSPEEDR_10 EQU (0x00300000)
GPIO_OSPEEDR_11 EQU (0x00C00000)
GPIO_OSPEEDR_12 EQU (0x03000000)
GPIO_OSPEEDR_13 EQU (0x0C000000)
GPIO_OSPEEDR_14 EQU (0x30000000)
GPIO_OSPEEDR_15 EQU (0xC0000000)
;****************** Bit definition for GPIO_PUPDR register ****************
; pattern masks. Use as: (GPIO_PUPDR_6 & GPIO_PUPDR_UP)
GPIO_PUPDR_NONE EQU 0x00000000
GPIO_PUPDR_UP EQU 0x55555555
GPIO_PUPDR_DOWN EQU 0xAAAAAAAA
GPIO_PUPDR_0 EQU (0x00000003)
GPIO_PUPDR_1 EQU (0x0000000C)
GPIO_PUPDR_2 EQU (0x00000030)
GPIO_PUPDR_3 EQU (0x000000C0)
GPIO_PUPDR_4 EQU (0x00000300)
GPIO_PUPDR_5 EQU (0x00000C00)
GPIO_PUPDR_6 EQU (0x00003000)
GPIO_PUPDR_7 EQU (0x0000C000)
GPIO_PUPDR_8 EQU (0x00030000)
GPIO_PUPDR_9 EQU (0x000C0000)
GPIO_PUPDR_10 EQU (0x00300000)
GPIO_PUPDR_11 EQU (0x00C00000)
GPIO_PUPDR_12 EQU (0x03000000)
GPIO_PUPDR_13 EQU (0x0C000000)
GPIO_PUPDR_14 EQU (0x30000000)
GPIO_PUPDR_15 EQU (0xC0000000)
;****************** Bit definition for GPIO_BSRR register *****************
GPIO_BSRR_BS_0 EQU (0x00000001)
GPIO_BSRR_BS_1 EQU (0x00000002)
GPIO_BSRR_BS_2 EQU (0x00000004)
GPIO_BSRR_BS_3 EQU (0x00000008)
GPIO_BSRR_BS_4 EQU (0x00000010)
GPIO_BSRR_BS_5 EQU (0x00000020)
GPIO_BSRR_BS_6 EQU (0x00000040)
GPIO_BSRR_BS_7 EQU (0x00000080)
GPIO_BSRR_BS_8 EQU (0x00000100)
GPIO_BSRR_BS_9 EQU (0x00000200)
GPIO_BSRR_BS_10 EQU (0x00000400)
GPIO_BSRR_BS_11 EQU (0x00000800)
GPIO_BSRR_BS_12 EQU (0x00001000)
GPIO_BSRR_BS_13 EQU (0x00002000)
GPIO_BSRR_BS_14 EQU (0x00004000)
GPIO_BSRR_BS_15 EQU (0x00008000)
GPIO_BSRR_BR_0 EQU (0x00010000)
GPIO_BSRR_BR_1 EQU (0x00020000)
GPIO_BSRR_BR_2 EQU (0x00040000)
GPIO_BSRR_BR_3 EQU (0x00080000)
GPIO_BSRR_BR_4 EQU (0x00100000)
GPIO_BSRR_BR_5 EQU (0x00200000)
GPIO_BSRR_BR_6 EQU (0x00400000)
GPIO_BSRR_BR_7 EQU (0x00800000)
GPIO_BSRR_BR_8 EQU (0x01000000)
GPIO_BSRR_BR_9 EQU (0x02000000)
GPIO_BSRR_BR_10 EQU (0x04000000)
GPIO_BSRR_BR_11 EQU (0x08000000)
GPIO_BSRR_BR_12 EQU (0x10000000)
GPIO_BSRR_BR_13 EQU (0x20000000)
GPIO_BSRR_BR_14 EQU (0x40000000)
GPIO_BSRR_BR_15 EQU (0x80000000)
;****************** Bit definition for GPIO_LCKR register *****************
GPIO_LCKR_0 EQU (0x00000001)
GPIO_LCKR_1 EQU (0x00000002)
GPIO_LCKR_2 EQU (0x00000004)
GPIO_LCKR_3 EQU (0x00000008)
GPIO_LCKR_4 EQU (0x00000010)
GPIO_LCKR_5 EQU (0x00000020)
GPIO_LCKR_6 EQU (0x00000040)
GPIO_LCKR_7 EQU (0x00000080)
GPIO_LCKR_8 EQU (0x00000100)
GPIO_LCKR_9 EQU (0x00000200)
GPIO_LCKR_10 EQU (0x00000400)
GPIO_LCKR_11 EQU (0x00000800)
GPIO_LCKR_12 EQU (0x00001000)
GPIO_LCKR_13 EQU (0x00002000)
GPIO_LCKR_14 EQU (0x00004000)
GPIO_LCKR_15 EQU (0x00008000)
GPIO_LCKR_K EQU (0x00010000)
;****************** Bit definition for GPIO_AFRL register *****************
GPIO_AFRL_0 EQU (0x0000000F)
GPIO_AFRL_1 EQU (0x000000F0)
GPIO_AFRL_2 EQU (0x00000F00)
GPIO_AFRL_3 EQU (0x0000F000)
GPIO_AFRL_4 EQU (0x000F0000)
GPIO_AFRL_5 EQU (0x00F00000)
GPIO_AFRL_6 EQU (0x0F000000)
GPIO_AFRL_7 EQU (0xF0000000)
;****************** Bit definition for GPIO_AFRH register *****************
GPIO_AFRH_8 EQU (0x0000000F)
GPIO_AFRH_9 EQU (0x000000F0)
GPIO_AFRH_10 EQU (0x00000F00)
GPIO_AFRH_11 EQU (0x0000F000)
GPIO_AFRH_12 EQU (0x000F0000)
GPIO_AFRH_13 EQU (0x00F00000)
GPIO_AFRH_14 EQU (0x0F000000)
GPIO_AFRH_15 EQU (0xF0000000)
END