.syntax unified

.equ L152,1
.include "../Core/src/regs.s"

.global mainasm

mainasm:



main:
ldr R0,=rcc
ldr R1,[R0,RCC_AHBENR]
orr R1,Bit2+Bit1+Bit0
str R1,[R0,RCC_AHBENR]


ldr R0,=GPIOB
mov	R2,0
strh R2,[R0,MODER]
mov	R1,0b1010101010101010
strh R1,[R0,PUPDR]

ldr R1,=GPIOC
mov	R2,0b0101010101010101
strh R2,[R1,MODER]

//Mit PB0 steigende Flanke soll ein Interrupt ausgelöst werden
//1. NVIC alle Interrupts einschalten
//NVIC config enable Interrupt
ldr R4,=nvic

ldr R3,=0xFFFFFFFF

str R3,[R4,isrEnableReg0]
str R3,[R4,isrEnableReg1]

//2. Interruptquelle auswählen
ldr	R4,=SysCFG
ldr R3,=0b0001000100010001	//EXTI 3..0 GPIOB: PB3, PB2, Pb1, PB0
str	R3,[R4,SYSCFG_EXTICR1]

//3. Steigende Flanke
ldr R4,=EXTI
mov R3,Bit0
str	R3,[R4,RTSR]

//4. Interrupt freibeben
ldr R4,=EXTI
mov R3,Bit0
str	R3,[R4,IMR]


schleife:				//Sprungmarke
//ldrb	R3,[R0,IDR]
//strb	R3,[R1,ODR]


	b	schleife		//bransh = Sprung = Fortsetzen bei Sprungmarke (label) schleife:

//5. ISR
.global meinInterrupt
meinInterrupt:
//4. Interrupt freibeben


//Pendingbit zurücksetzen
ldr R4,=EXTI
mov R3,Bit0
str	R3,[R4,PR]

ldr	R3,[R1,ODR]
eor R3,Bit0
strb R3,[R1,ODR]

bx lr

//6. ISR in Vektortabelle in
.end
