M Makefile => Makefile +2 -2
@@ 1,5 1,5 @@
-DEVICE?=stm32f446
-TARGET?=stm32f4x
+DEVICE?=stm32h747
+TARGET?=stm32h7x
CPU?=cortex-m7
APP=blink.elf
M src/main.c => src/main.c +21 -16
@@ 1,36 1,41 @@
#include <stdint.h>
#define PERIPHERAL_BASE (0x40000000U)
-#define AHB1_BASE (PERIPHERAL_BASE + 0x20000U)
-#define GPIOA_BASE (AHB1_BASE + 0x0U)
-#define RCC_BASE (AHB1_BASE + 0x3800U)
+#define AHB4_BASE (PERIPHERAL_BASE + 0x18020000U)
+#define GPIOI_BASE (AHB4_BASE + 0x2000U)
+#define RCC_BASE (AHB4_BASE + 0x4400U)
-#define RCC_AHB1ENR_OFFSET (0x30U)
-#define RCC_AHB1ENR ((volatile uint32_t*) (RCC_BASE + RCC_AHB1ENR_OFFSET))
-#define RCC_AHB1ENR_GPIOAEN (0x00U)
+#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 GPIOA_MODER ((volatile uint32_t*) (GPIOA_BASE + GPIO_MODER_OFFSET))
+#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 GPIOA_ODR ((volatile uint32_t*) (GPIOA_BASE + GPIO_ODR_OFFSET))
+#define GPIOI_ODR ((volatile uint32_t*) (GPIOI_BASE + GPIO_ODR_OFFSET))
-#define LED_PIN 5
+#define LED1_PIN 12
+#define LED2_PIN 13
void main()
{
- *RCC_AHB1ENR |= (1 << RCC_AHB1ENR_GPIOAEN);
+ *RCC_AHB4ENR |= (1 << RCC_AHB4ENR_GPIOIEN);
- // do two dummy reads after enabling the peripheral clock, as per the errata
+ // do two dummy reads after enabling the peripheral clock
volatile uint32_t dummy;
- dummy = *(RCC_AHB1ENR);
- dummy = *(RCC_AHB1ENR);
+ dummy = *(RCC_AHB4ENR);
+ dummy = *(RCC_AHB4ENR);
- *GPIOA_MODER |= (1 << GPIO_MODER_MODER5);
+ *GPIOI_MODER = (1 << GPIO_MODER_MODER12) | (1 << GPIO_MODER_MODER13);
+ *GPIOI_ODR ^= (1 << LED2_PIN);
while(1)
{
- *GPIOA_ODR ^= (1 << LED_PIN);
- for (uint32_t i = 0; i < 500000; i++);
+ *GPIOI_ODR ^= (1 << LED1_PIN);
+ *GPIOI_ODR ^= (1 << LED2_PIN);
+ for (uint32_t i = 0; i < 2000000; i++);
}
}