lab2-extra: enable LEDs by performing direct register writes
This commit is contained in:
parent
1a6d8232a4
commit
1e54d5cd27
2
Makefile
2
Makefile
|
@ -23,7 +23,7 @@ lab1_v2.bin: lab1_v2.S lab1_v2.ld
|
||||||
|
|
||||||
qemu: build
|
qemu: build
|
||||||
qemu-system-gnuarmeclipse --verbose --verbose --board STM32F4-Discovery \
|
qemu-system-gnuarmeclipse --verbose --verbose --board STM32F4-Discovery \
|
||||||
--mcu STM32F407VG -d unimp,guest_errors --nographic \
|
--mcu STM32F407VG -d unimp,guest_errors \
|
||||||
--semihosting-config enable=on,target=native -s -S \
|
--semihosting-config enable=on,target=native -s -S \
|
||||||
--image start.bin
|
--image start.bin
|
||||||
|
|
||||||
|
|
20
start.S
20
start.S
|
@ -3,6 +3,8 @@
|
||||||
.thumb
|
.thumb
|
||||||
|
|
||||||
.equ SYSTICK_OFFSET, 0xE000E010
|
.equ SYSTICK_OFFSET, 0xE000E010
|
||||||
|
.equ RCC_OFFSET, 0x40023800
|
||||||
|
.equ GPIOD_OFFSET, 0x40020C00
|
||||||
|
|
||||||
.section .text
|
.section .text
|
||||||
|
|
||||||
|
@ -16,6 +18,7 @@ v2_img_start:
|
||||||
v2_img_end: @ ==__hard_reset__
|
v2_img_end: @ ==__hard_reset__
|
||||||
|
|
||||||
__hard_reset__:
|
__hard_reset__:
|
||||||
|
bl setup_leds
|
||||||
bl load_systick_timer
|
bl load_systick_timer
|
||||||
bl lab1_v1
|
bl lab1_v1
|
||||||
|
|
||||||
|
@ -77,3 +80,20 @@ bootload_v2:
|
||||||
blx r3
|
blx r3
|
||||||
|
|
||||||
pop {pc}
|
pop {pc}
|
||||||
|
|
||||||
|
setup_leds:
|
||||||
|
@ RCC reset & enable GPIOD
|
||||||
|
ldr r0, =RCC_OFFSET
|
||||||
|
mov r1, #0x8
|
||||||
|
str r1, [r0, #0x30] @ ENABLE
|
||||||
|
|
||||||
|
@ GPIOD config
|
||||||
|
ldr r0, =GPIOD_OFFSET
|
||||||
|
|
||||||
|
ldr r1, =0x55000000
|
||||||
|
str r1, [r0] @ Mode Register
|
||||||
|
|
||||||
|
mov r1, #0xF000
|
||||||
|
str r1, [r0, #0x14] @ Output Data Register
|
||||||
|
|
||||||
|
mov pc, lr
|
||||||
|
|
Loading…
Reference in New Issue