aboutsummaryrefslogtreecommitdiff
path: root/STM32F429ZIT6_HelloWorld/main.c
blob: 0025c55c9f1fdf533a29d3b0f0c0765f73df5f3a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdint.h>
#include <stdbool.h>

uint32_t *RCC = (uint32_t *) 0x40023800;
uint32_t *AHB1ENR = (uint32_t *) 0x40023830;
uint32_t *GPIOB_MODER = (uint32_t *) 0x40020400;
uint32_t *GPIOB_ODR = (uint32_t *) 0x40020414;
uint32_t *GPIOB = (uint32_t *) 0x40020400;
uint32_t *GPIOA_MODER = (uint32_t *) 0x40020000;
uint32_t *GPIOA = (uint32_t *) 0x40020000;

#define set(reg, bit, val) *(reg) ^= (-(val) ^ *(reg)) & (1UL << (bit))

int main(void) {
    set(AHB1ENR, 1 /* GPIOBEN */, true);
    set(AHB1ENR, 0 /* GPIOAEN */, true);

    set(GPIOB_MODER, 0 /* MODER0 */, true);
    set(GPIOB_MODER, 1 /* MODER0 */, false);
    set(GPIOB_MODER, 14 /* MODER7 */, true);
    set(GPIOB_MODER, 15 /* MODER7 */, false);
    set(GPIOB_MODER, 28 /* MODER14 */, true);
    set(GPIOB_MODER, 29 /* MODER14 */, false);

    set(GPIOB_ODR, 0 /* ODR0 */, true);
    set(GPIOB_ODR, 7 /* ODR7 */, true);
    set(GPIOB_ODR, 14 /* ODR14 */, true);
}