[add] disasm script
[fw/stlink] / example / main.c
1 typedef unsigned int uint32_t;
2
3 #define GPIOC           0x40011000 // port C
4 #define GPIOC_CRH       (GPIOC + 0x04) // port configuration register high
5 #define GPIOC_ODR       (GPIOC + 0x0c) // port output data register
6 #define LED_BLUE        (1<<8) // pin 8
7 #define LED_GREEN       (1<<9) // pin 9
8
9 #define delay()                                         \
10 do {                                                    \
11   register unsigned int i;                              \
12   for (i = 0; i < 1000000; ++i)                         \
13     __asm__ __volatile__ ("nop\n\t":::"memory");        \
14 } while (0)
15
16 static void __attribute__((naked)) __attribute__((used)) main(void)
17 {
18   *(volatile uint32_t*)GPIOC_CRH = 0x44444411;
19
20   while (1)
21   {
22     *(volatile uint32_t*)GPIOC_ODR = LED_BLUE | LED_GREEN;
23     delay();
24     *(volatile uint32_t*)GPIOC_ODR = 0;
25     delay();
26   }
27 }