Advertisement
teplofizik

button.s (3)

Aug 6th, 2012
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; Драйвер кнопки
  2. ; Плата STM32F4-Discovery
  3. ; http://teplofizik.diary.ru/p179418376.htm
  4.  
  5.     AREA    |.text|, CODE, READONLY
  6.  
  7.             EXPORT ButtonInit
  8.             EXPORT ButtonGet
  9.  
  10. ; Объявления
  11. RCC_AHB1ENR           EQU 0x40023830
  12. RCC_AHB1ENR_GPIOAEN   EQU 0x00000001 ; 0 бит
  13.  
  14. GPIOA_BASE            EQU 0x40020000
  15.  
  16. GPIO_PUPDR_OFFSET     EQU 0x0000000C
  17. GPIO_PUPDR_PUPDR00_0  EQU 0x00000001
  18.  
  19. GPIO_IDR_OFFSET       EQU 0x00000010
  20.  
  21. ; Кнопка подключена к выводу 0 порта A
  22.  
  23. ; Инициализация выводов, подключённых к кнопке
  24. ; Аргументы: нет
  25. ; Результат: 0, если кнопка отпущена, 1, если нажата.
  26. ButtonGet   PROC
  27.             ; Читаем состояние порта
  28.             LDR R0, =GPIOA_BASE
  29.             LDR R1, [R0, #GPIO_IDR_OFFSET]
  30.  
  31.             ; Маска для 0
  32.             MOV R0, #0x00000001
  33.  
  34.             AND R0, R0, R1
  35.            
  36.             BX LR
  37.             ENDP
  38.  
  39. ; Инициализация выводов, подключённых к кнопке
  40. ; Аргументы: нет
  41. ; Результат: нет
  42. ButtonInit  PROC
  43.             ; Разрешим тактирование порта A
  44.             ; Загрузим в регистр R0 адрес регистра RCC_AHB1ENR
  45.             LDR R0, =RCC_AHB1ENR
  46.             ; Прочитаем в регистр R1 его содержимое
  47.             LDR R1, [R0]
  48.             ; Установим бит тактирования порта A
  49.             ORR R1, R1, #RCC_AHB1ENR_GPIOAEN
  50.             ; Запишем обратно
  51.             STR R1, [R0]
  52.            
  53.             ; По запуску ножка настроена на вход (MODER)
  54.             ; Нет подтяжки
  55.  
  56.             BX  LR
  57.             ENDP
  58.  
  59.     END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement