Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Драйвер NVIC
- ; Плата STM32F4-Discovery
- ; Проверять выравнивание стека (8 байт)
- PRESERVE8
- AREA |.text|, CODE, READONLY
- GET stm32f4xx.inc
- ; Разрешить прерывание по его номеру
- ; Аргументы: 1
- ; R0: номер прерывания
- ; Результат: нет
- EXPORT NVIC_EnableIRQ
- NVIC_EnableIRQ PROC
- ; Вычислим номер регистра и его позицию.
- ; R1 - номер регистра (3 старших бита из восьми)
- MOV R1, R0
- LSR R1, #5
- ; R2 - номер бита (5 младших бит)
- MOV R2, R0
- AND R2, #0x1F
- ; R1 - смещение до регистра от базового (*4)
- LSL R1, #2
- ; R0 - маска выбранного бита
- MOV R0, #0x01
- LSL R0, R2
- ; Базовый адрес регистров включения прерываний
- MOV32 R2, NVIC_ISER_BASE
- ; Адрес нужного регистра NVIC_ISER[IRQ >> 5]
- ADD R2, R1
- ; Установить бит в регистре
- LDR R1, [R2]
- ORR R1, R0
- STR R1, [R2]
- ; Готово, выходим
- BX LR
- ENDP
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement