Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; STM32F4xx.inc
- ; Файл описания периферии STM32F4xx.
- ; http://teplofizik.diary.ru/p179425307.htm
- AREA |.text|, CODE, READONLY
- ; RCC
- RCC_AHB1ENR EQU 0x40023830
- RCC_AHB1ENR_GPIOAEN EQU 0x00000001 ; GPIOA
- RCC_AHB1ENR_GPIOBEN EQU 0x00000002 ; GPIOB
- RCC_AHB1ENR_GPIOCEN EQU 0x00000004 ; GPIOC
- RCC_AHB1ENR_GPIODEN EQU 0x00000008 ; GPIOD
- RCC_AHB1ENR_GPIOEEN EQU 0x00000010 ; GPIOE
- RCC_APB2ENR EQU 0x40023844
- RCC_APB2ENR_SPI1EN EQU 0x00001000 ; SPI1
- ; GPIO
- GPIOA_BASE EQU 0x40020000
- GPIOB_BASE EQU 0x40020400
- GPIOC_BASE EQU 0x40020800
- GPIOD_BASE EQU 0x40020C00
- GPIOE_BASE EQU 0x40021000
- ; Регистры
- GPIO_MODER_OFFSET EQU 0x00000000 ; GPIOx->MODER
- GPIO_OTYPER_OFFSET EQU 0x00000004 ; GPIOx->OTYPER
- GPIO_OSPEEDR_OFFSET EQU 0x00000008 ; GPIOx->OSPEEDR
- GPIO_PUPDR_OFFSET EQU 0x0000000C ; GPIOx->PUPDR
- GPIO_IDR_OFFSET EQU 0x00000010 ; GPIOx->IDR
- GPIO_ODR_OFFSET EQU 0x00000014 ; GPIOx->ODR
- GPIO_BSRRL_OFFSET EQU 0x00000018 ; GPIOx->BSRRL Сброс
- GPIO_BSRRH_OFFSET EQU 0x0000001A ; GPIOx->BSRRH Установка
- GPIO_LCKR_OFFSET EQU 0x0000001C ; GPIOx->LCKR
- GPIO_AFRL_OFFSET EQU 0x00000020 ; GPIOx->AFRL
- GPIO_AFRH_OFFSET EQU 0x00000024 ; GPIOx->AFRH
- ; GPIOx->OSPEEDR
- ; Режим: 25 МГц
- GPIO_OSPEEDR_OSPEEDR0_0 EQU 0x00000001
- GPIO_OSPEEDR_OSPEEDR1_0 EQU 0x00000004
- GPIO_OSPEEDR_OSPEEDR2_0 EQU 0x00000010
- GPIO_OSPEEDR_OSPEEDR3_0 EQU 0x00000040
- GPIO_OSPEEDR_OSPEEDR4_0 EQU 0x00000100
- GPIO_OSPEEDR_OSPEEDR5_0 EQU 0x00000400
- GPIO_OSPEEDR_OSPEEDR6_0 EQU 0x00001000
- GPIO_OSPEEDR_OSPEEDR7_0 EQU 0x00004000
- GPIO_OSPEEDR_OSPEEDR8_0 EQU 0x00010000
- GPIO_OSPEEDR_OSPEEDR9_0 EQU 0x00040000
- GPIO_OSPEEDR_OSPEEDR10_0 EQU 0x00100000
- GPIO_OSPEEDR_OSPEEDR11_0 EQU 0x00400000
- GPIO_OSPEEDR_OSPEEDR12_0 EQU 0x01000000
- GPIO_OSPEEDR_OSPEEDR13_0 EQU 0x04000000
- GPIO_OSPEEDR_OSPEEDR14_0 EQU 0x10000000
- GPIO_OSPEEDR_OSPEEDR15_0 EQU 0x40000000
- ; GPIOx->OSPEEDR
- ; Режим: 50 МГц
- GPIO_OSPEEDR_OSPEEDR0_1 EQU 0x00000002
- GPIO_OSPEEDR_OSPEEDR1_1 EQU 0x00000008
- GPIO_OSPEEDR_OSPEEDR2_1 EQU 0x00000020
- GPIO_OSPEEDR_OSPEEDR3_1 EQU 0x00000080
- GPIO_OSPEEDR_OSPEEDR4_1 EQU 0x00000200
- GPIO_OSPEEDR_OSPEEDR5_1 EQU 0x00000800
- GPIO_OSPEEDR_OSPEEDR6_1 EQU 0x00002000
- GPIO_OSPEEDR_OSPEEDR7_1 EQU 0x00008000
- GPIO_OSPEEDR_OSPEEDR8_1 EQU 0x00020000
- GPIO_OSPEEDR_OSPEEDR9_1 EQU 0x00080000
- GPIO_OSPEEDR_OSPEEDR10_1 EQU 0x00200000
- GPIO_OSPEEDR_OSPEEDR11_1 EQU 0x00800000
- GPIO_OSPEEDR_OSPEEDR12_1 EQU 0x02000000
- GPIO_OSPEEDR_OSPEEDR13_1 EQU 0x08000000
- GPIO_OSPEEDR_OSPEEDR14_1 EQU 0x20000000
- GPIO_OSPEEDR_OSPEEDR15_1 EQU 0x80000000
- ; GPIOx->MODER
- ; Режим: цифровой выход
- GPIO_MODER_MODER0_0 EQU 0x00000001
- GPIO_MODER_MODER1_0 EQU 0x00000004
- GPIO_MODER_MODER2_0 EQU 0x00000010
- GPIO_MODER_MODER3_0 EQU 0x00000040
- GPIO_MODER_MODER4_0 EQU 0x00000100
- GPIO_MODER_MODER5_0 EQU 0x00000400
- GPIO_MODER_MODER6_0 EQU 0x00001000
- GPIO_MODER_MODER7_0 EQU 0x00004000
- GPIO_MODER_MODER8_0 EQU 0x00010000
- GPIO_MODER_MODER9_0 EQU 0x00040000
- GPIO_MODER_MODER10_0 EQU 0x00100000
- GPIO_MODER_MODER11_0 EQU 0x00400000
- GPIO_MODER_MODER12_0 EQU 0x01000000
- GPIO_MODER_MODER13_0 EQU 0x04000000
- GPIO_MODER_MODER14_0 EQU 0x10000000
- GPIO_MODER_MODER15_0 EQU 0x40000000
- ; GPIOx->MODER
- ; Режим: альтернативная функция
- GPIO_MODER_MODER0_1 EQU 0x00000002
- GPIO_MODER_MODER1_1 EQU 0x00000008
- GPIO_MODER_MODER2_1 EQU 0x00000020
- GPIO_MODER_MODER3_1 EQU 0x00000080
- GPIO_MODER_MODER4_1 EQU 0x00000200
- GPIO_MODER_MODER5_1 EQU 0x00000800
- GPIO_MODER_MODER6_1 EQU 0x00002000
- GPIO_MODER_MODER7_1 EQU 0x00008000
- GPIO_MODER_MODER8_1 EQU 0x00020000
- GPIO_MODER_MODER9_1 EQU 0x00080000
- GPIO_MODER_MODER10_1 EQU 0x00200000
- GPIO_MODER_MODER11_1 EQU 0x00800000
- GPIO_MODER_MODER12_1 EQU 0x02000000
- GPIO_MODER_MODER13_1 EQU 0x08000000
- GPIO_MODER_MODER14_1 EQU 0x20000000
- GPIO_MODER_MODER15_1 EQU 0x80000000
- ; GPIOx->PUPDR
- ; Режим: подтяжка к питанию (pull-up)
- GPIO_PUPDR_PUPDR0_0 EQU 0x00000001
- GPIO_PUPDR_PUPDR1_0 EQU 0x00000004
- GPIO_PUPDR_PUPDR2_0 EQU 0x00000010
- GPIO_PUPDR_PUPDR3_0 EQU 0x00000040
- GPIO_PUPDR_PUPDR4_0 EQU 0x00000100
- GPIO_PUPDR_PUPDR5_0 EQU 0x00000400
- GPIO_PUPDR_PUPDR6_0 EQU 0x00001000
- GPIO_PUPDR_PUPDR7_0 EQU 0x00004000
- GPIO_PUPDR_PUPDR8_0 EQU 0x00010000
- GPIO_PUPDR_PUPDR9_0 EQU 0x00040000
- GPIO_PUPDR_PUPDR10_0 EQU 0x00100000
- GPIO_PUPDR_PUPDR11_0 EQU 0x00400000
- GPIO_PUPDR_PUPDR12_0 EQU 0x01000000
- GPIO_PUPDR_PUPDR13_0 EQU 0x04000000
- GPIO_PUPDR_PUPDR14_0 EQU 0x10000000
- GPIO_PUPDR_PUPDR15_0 EQU 0x40000000
- ; GPIOx->PUPDR
- ; Режим: подтяжка к земле (pull-down)
- GPIO_PUPDR_PUPDR0_1 EQU 0x00000002
- GPIO_PUPDR_PUPDR1_1 EQU 0x00000008
- GPIO_PUPDR_PUPDR2_1 EQU 0x00000020
- GPIO_PUPDR_PUPDR3_1 EQU 0x00000080
- GPIO_PUPDR_PUPDR4_1 EQU 0x00000200
- GPIO_PUPDR_PUPDR5_1 EQU 0x00000800
- GPIO_PUPDR_PUPDR6_1 EQU 0x00002000
- GPIO_PUPDR_PUPDR7_1 EQU 0x00008000
- GPIO_PUPDR_PUPDR8_1 EQU 0x00020000
- GPIO_PUPDR_PUPDR9_1 EQU 0x00080000
- GPIO_PUPDR_PUPDR10_1 EQU 0x00200000
- GPIO_PUPDR_PUPDR11_1 EQU 0x00800000
- GPIO_PUPDR_PUPDR12_1 EQU 0x02000000
- GPIO_PUPDR_PUPDR13_1 EQU 0x08000000
- GPIO_PUPDR_PUPDR14_1 EQU 0x20000000
- GPIO_PUPDR_PUPDR15_1 EQU 0x80000000
- ; GPIOx->BSSR
- ; Маска выводов
- GPIO_BSSR_PIN0 EQU 0x00000001 ; 0 бит
- GPIO_BSSR_PIN1 EQU 0x00000002 ; 1 бит
- GPIO_BSSR_PIN2 EQU 0x00000004 ; 2 бит
- GPIO_BSSR_PIN3 EQU 0x00000008 ; 3 бит
- GPIO_BSSR_PIN4 EQU 0x00000010 ; 4 бит
- GPIO_BSSR_PIN5 EQU 0x00000020 ; 5 бит
- GPIO_BSSR_PIN6 EQU 0x00000040 ; 6 бит
- GPIO_BSSR_PIN7 EQU 0x00000080 ; 7 бит
- GPIO_BSSR_PIN8 EQU 0x00000100 ; 8 бит
- GPIO_BSSR_PIN9 EQU 0x00000200 ; 9 бит
- GPIO_BSSR_PIN10 EQU 0x00000400 ; 10 бит
- GPIO_BSSR_PIN11 EQU 0x00000800 ; 11 бит
- GPIO_BSSR_PIN12 EQU 0x00001000 ; 12 бит
- GPIO_BSSR_PIN13 EQU 0x00002000 ; 13 бит
- GPIO_BSSR_PIN14 EQU 0x00004000 ; 14 бит
- GPIO_BSSR_PIN15 EQU 0x00008000 ; 15 бит
- ; SPI
- SPI1_BASE EQU 0x40013000
- ; Регистры
- SPI_CR1_OFFSET EQU 0x00000000 ; SPI->CR1
- SPI_CR2_OFFSET EQU 0x00000004 ; SPI->CR2
- SPI_SR_OFFSET EQU 0x00000008 ; SPI->SR
- SPI_DR_OFFSET EQU 0x0000000C ; SPI->DR
- SPI_CRCPR_OFFSET EQU 0x00000010 ; SPI->CRCPR
- SPI_RXCRCR_OFFSET EQU 0x00000014 ; SPI->RXCRCR
- SPI_TXCRCR_OFFSET EQU 0x00000018 ; SPI->TXCRCR
- SPI_I2SCFGR_OFFSET EQU 0x0000001C ; SPI->I2SCFGR
- SPI_I2SPR_OFFSET EQU 0x00000020 ; SPI->I2SPR
- ; SPI->CR1
- ; Биты настройки
- SPI_CR1_CPHA EQU 0x0001 ; Clock phase
- SPI_CR1_CPOL EQU 0x0002 ; Clock Polarity
- SPI_CR1_MSTR EQU 0x0004 ; Master Selection
- SPI_CR1_BR EQU 0x0038 ; BR[2:0] bits (Baud Rate Control)
- SPI_CR1_BR_0 EQU 0x0008 ; Bit 0
- SPI_CR1_BR_1 EQU 0x0010 ; Bit 1
- SPI_CR1_BR_2 EQU 0x0020 ; Bit 2
- SPI_CR1_SPE EQU 0x0040 ; SPI Enable
- SPI_CR1_LSBFIRST EQU 0x0080 ; Frame Format
- SPI_CR1_SSI EQU 0x0100 ; Internal slave select
- SPI_CR1_SSM EQU 0x0200 ; Software slave management
- SPI_CR1_RXONLY EQU 0x0400 ; Receive only
- SPI_CR1_DFF EQU 0x0800 ; Data Frame Format
- SPI_CR1_CRCNEXT EQU 0x1000 ; Transmit CRC next
- SPI_CR1_CRCEN EQU 0x2000 ; Hardware CRC calculation enable
- SPI_CR1_BIDIOE EQU 0x4000 ; Output enable in bidirectional mode
- SPI_CR1_BIDIMODE EQU 0x8000 ; Bidirectional data mode enable
- ; SPI->SR
- ; Флаги состояния модуля
- SPI_SR_RXNE EQU 0x01 ; Receive buffer Not Empty
- SPI_SR_TXE EQU 0x02 ; Transmit buffer Empty
- SPI_SR_CHSIDE EQU 0x04 ; Channel side
- SPI_SR_UDR EQU 0x08 ; Underrun flag
- SPI_SR_CRCERR EQU 0x10 ; CRC Error flag
- SPI_SR_MODF EQU 0x20 ; Mode fault
- SPI_SR_OVR EQU 0x40 ; Overrun flag
- SPI_SR_BSY EQU 0x80 ; Busy flag
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement