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);
}
|