.syntax unified
.global initIRQ

#include "main.h"
.extern x
.equ rcc,0x40023800
.equ exti,0x40010400
.equ SysCFG,0x40010000
.equ RCC_AHBENR,0x1c
//Taste an PC13
initIRQ:
	ldr	r1,=x

	//GPIOC mit Takt versorgen
	ldr 	r1,=rcc
	ldr r2,[r1,#RCC_AHBENR]	//APB2 peripheral clock enable register
	add r2,#0x00000004	//GPIOC clock enable
	str r2,[r1,#RCC_AHBENR]

	ldr	r1,=exti	//EXTI Base Address
	//EXTI13 config
	mov.w	r2,#0x2000
	str	r2,[r1,#0x00]	//maskregister
	str r2,[r1,#0x0c]	//falling edge register
	str r2,[r1,#0x14]	//clear pending register (EXTI_PR)
	ldr r1,=rcc	//rcc base address
	ldr r2,[r1,#0x20]	//APB2 peripheral clock enable register
	add r2,#0x00000001	//SYSCFGEN: System configuration controller clock enable
	str r2,[r1,#0x20]

	ldr r1,=SysCFG	//SysCFG Base Address
	mov.w r2,#0x0020	//PCx - Pin als Interruptquelle
	strh r2,[r1,#0x14]	//SYSCFG external interrupt configuration register 4
	//NVIC config
	bx lr

.end


