#define SRAM_SIZE 0x00010000
#define SRAM_OFFSET 0x20000000
+/* TODO #define KHEAP_SIZE 0x100 */
+
/* Safety macro's to get the address or value */
#define MEM_VALUE(addr) *((volatile uint32_t(*) (addr))
#define MEM_ADDR(addr) ((volatile uint32_t *) (addr))
#define GPIOA_CRL MEM_ADDR(0x40010800) // for ADC1
#define GPIOA_ODR MEM_ADDR(0x4001080C)
#define GPIOB_CRL MEM_ADDR(0x40010C00) // low register (!) for I2C1
+#define GPIOB_CRH MEM_ADDR(0x40010C04) // high register for SPI2
#define GPIOB_BSRR MEM_ADDR(0x40010C10)
#define GPIOB_ODR MEM_ADDR(0x40010C0C)
#define GPIOB_IDR MEM_ADDR(0x40010C08)
-#define GPIOC_CRL MEM_ADDR(0x40011000) // led
+#define GPIOC_CRL MEM_ADDR(0x40011000) // SPI2 uses D/CX (A0)
#define GPIOC_CRH MEM_ADDR(0x40011004)
#define GPIOC_ODR MEM_ADDR(0x4001100C)
#define AFIO_EVCR MEM_ADDR(0x40010000)
-/* I2C REGISTER */
+/* I2C REGISTERS */
#define I2C_CR1 MEM_ADDR(0x40005400)
#define I2C_CR2 MEM_ADDR(0x40005404)
#define I2C_DR MEM_ADDR(0x40005410)
#define I2C_CCR MEM_ADDR(0x4000541C)
#define I2C_TRISE MEM_ADDR(0x40005420)
+/* SPI2 REGISTERS */
+#define SPI2_CR1 MEM_ADDR(0x40003800)
+#define SPI2_CR2 MEM_ADDR(0x40003804)
+#define SPI2_SR MEM_ADDR(0x40003808)
+#define SPI2_DR MEM_ADDR(0x4000380C)
+#define SPI2_CFGR MEM_ADDR(0x4000381C)
+#define SPI2_PR MEM_ADDR(0x40003820)
+
/* EXTERNAL INTERRUPTS */
#define EXTI_IMR MEM_ADDR(0x40010400)
#define EXTI_RTSR MEM_ADDR(0x40010408)