A .gitmodules => .gitmodules +6 -0
@@ 0,0 1,6 @@
+[submodule "CMSIS"]
+ path = libs/CMSIS_6
+ url = https://github.com/ARM-software/CMSIS_6
+[submodule "cmsis_device_h7"]
+ path = libs/cmsis_device_h7
+ url = https://github.com/STMicroelectronics/cmsis_device_h7/
M Makefile => Makefile +6 -1
@@ 19,7 19,12 @@ DEVICESRCS=$(wildcard $(DEVICEDIR)/*.c)
SRCS=$(PROJSRCS) $(GENERALSRCS) $(DEVICESRCS)
OBJS=$(patsubst %.c,obj/%.o,$(SRCS))
-CFLAGS=-I$(INCDIR) -I$(DEVICEDIR)/$(INCDIR) -mthumb -mcpu=$(CPU) -nostdlib -g -DCORE_CM7
+CFLAGS=-I$(INCDIR) \
+ -I$(DEVICEDIR)/$(INCDIR) \
+ -Ilibs/CMSIS_6/CMSIS/Core/Include \
+ -Ilibs/cmsis_device_h7/Include \
+ -mthumb -mcpu=$(CPU) -nostdlib -g \
+ -DCORE_CM7
LDFLAGS=-T$(DEVICEDIR)/linker_script.ld -nostdlib
CC=arm-none-eabi-gcc
A libs/CMSIS_6 => libs/CMSIS_6 +1 -0
@@ 0,0 1,1 @@
+Subproject commit 8c4dc58928b3347f6aa98b6fb2bf6770f32a72b7
A libs/cmsis_device_h7 => libs/cmsis_device_h7 +1 -0
@@ 0,0 1,1 @@
+Subproject commit 13ba9da797a30e1563a8795f974425fb26dd0457
M src/main.c => src/main.c +8 -24
@@ 1,41 1,25 @@
#include <stdint.h>
-
-#define PERIPHERAL_BASE (0x40000000U)
-#define AHB4_BASE (PERIPHERAL_BASE + 0x18020000U)
-#define GPIOI_BASE (AHB4_BASE + 0x2000U)
-#define RCC_BASE (AHB4_BASE + 0x4400U)
-
-#define RCC_AHB4ENR_OFFSET (0xE0U)
-#define RCC_AHB4ENR ((volatile uint32_t*) (RCC_BASE + RCC_AHB4ENR_OFFSET))
-#define RCC_AHB4ENR_GPIOIEN (0x08U)
-
-#define GPIO_MODER_OFFSET (0x00U)
-#define GPIOI_MODER ((volatile uint32_t*) (GPIOI_BASE + GPIO_MODER_OFFSET))
-#define GPIO_MODER_MODER5 (10U)
-#define GPIO_MODER_MODER13 (26U)
-#define GPIO_MODER_MODER12 (24U)
-#define GPIO_ODR_OFFSET (0x14U)
-#define GPIOI_ODR ((volatile uint32_t*) (GPIOI_BASE + GPIO_ODR_OFFSET))
+#include "stm32h747xx.h"
#define LED1_PIN 12
#define LED2_PIN 13
void main()
{
- *RCC_AHB4ENR |= (1 << RCC_AHB4ENR_GPIOIEN);
+ RCC->AHB4ENR |= (1 << RCC_AHB4ENR_GPIOIEN_Pos);
// do two dummy reads after enabling the peripheral clock
volatile uint32_t dummy;
- dummy = *(RCC_AHB4ENR);
- dummy = *(RCC_AHB4ENR);
+ dummy = RCC->AHB4ENR;
+ dummy = RCC->AHB4ENR;
- *GPIOI_MODER = (1 << GPIO_MODER_MODER12) | (1 << GPIO_MODER_MODER13);
+ GPIOI->MODER = (1 << GPIO_MODER_MODE12_Pos) | (1 << GPIO_MODER_MODE13_Pos);
- *GPIOI_ODR ^= (1 << LED2_PIN);
+ GPIOI->ODR ^= (1 << LED2_PIN);
while(1)
{
- *GPIOI_ODR ^= (1 << LED1_PIN);
- *GPIOI_ODR ^= (1 << LED2_PIN);
+ GPIOI->ODR ^= (1 << LED1_PIN);
+ GPIOI->ODR ^= (1 << LED2_PIN);
for (uint32_t i = 0; i < 2000000; i++);
}
}