Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Драйвер кнопки
- ; Плата STM32F4-Discovery
- ; http://teplofizik.diary.ru/p179418376.htm
- AREA |.text|, CODE, READONLY
- EXPORT ButtonInit
- EXPORT ButtonGet
- ; Объявления
- RCC_AHB1ENR EQU 0x40023830
- RCC_AHB1ENR_GPIOAEN EQU 0x00000001 ; 0 бит
- GPIOA_BASE EQU 0x40020000
- GPIO_PUPDR_OFFSET EQU 0x0000000C
- GPIO_PUPDR_PUPDR00_0 EQU 0x00000001
- GPIO_IDR_OFFSET EQU 0x00000010
- ; Кнопка подключена к выводу 0 порта A
- ; Инициализация выводов, подключённых к кнопке
- ; Аргументы: нет
- ; Результат: 0, если кнопка отпущена, 1, если нажата.
- ButtonGet PROC
- ; Читаем состояние порта
- LDR R0, =GPIOA_BASE
- LDR R1, [R0, #GPIO_IDR_OFFSET]
- ; Маска для 0
- MOV R0, #0x00000001
- AND R0, R0, R1
- BX LR
- ENDP
- ; Инициализация выводов, подключённых к кнопке
- ; Аргументы: нет
- ; Результат: нет
- ButtonInit PROC
- ; Разрешим тактирование порта A
- ; Загрузим в регистр R0 адрес регистра RCC_AHB1ENR
- LDR R0, =RCC_AHB1ENR
- ; Прочитаем в регистр R1 его содержимое
- LDR R1, [R0]
- ; Установим бит тактирования порта A
- ORR R1, R1, #RCC_AHB1ENR_GPIOAEN
- ; Запишем обратно
- STR R1, [R0]
- ; По запуску ножка настроена на вход (MODER)
- ; Нет подтяжки
- BX LR
- ENDP
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement