237
|
1 /*
|
|
2
|
|
3 This file blinks a LED on the STM32F4 discovery board.
|
|
4
|
|
5 the board has 4 leds on PD12, PD13, PD14 and PD15
|
|
6
|
|
7 */
|
|
8
|
|
9 package blink;
|
|
10
|
|
11 type struct {
|
|
12 int MODER;
|
|
13 int OTYPER;
|
|
14 int OSPEEDR;
|
|
15 int PUPDR;
|
|
16 int IDR;
|
|
17 int ODR;
|
|
18 }* GPIO_Type;
|
|
19
|
|
20 type struct {
|
|
21 int CR;
|
|
22 int PLLCFGR;
|
|
23 int CFGR;
|
|
24 int CIR;
|
|
25 int AHB1RSTR;
|
|
26 int AHB2RSTR;
|
|
27 int AHB3RSTR;
|
|
28 int reserved0;
|
|
29 int APB1RSTR;
|
|
30 int APB2RSTR;
|
|
31 int reserved1a, reserved1b;
|
|
32 int AHB1ENR;
|
|
33 int AHB2ENR;
|
|
34 int AHB3ENR;
|
|
35 int reserved2;
|
|
36 int APB1ENR, APB2ENR;
|
|
37 }* RCC_Type;
|
|
38
|
|
39
|
|
40 // Functions:
|
|
41 function void main()
|
|
42 {
|
|
43 // Memory mapped control registers:
|
|
44 var GPIO_Type GPIOD;
|
|
45 GPIOD = cast<GPIO_Type>(0x40020C00);
|
|
46 var RCC_Type RCC;
|
|
47 RCC = cast<RCC_Type>(0x40023800);
|
|
48
|
|
49 // Enable the clock to port D:
|
|
50 RCC->AHB1ENR = RCC->AHB1ENR | (1 << 3);
|
|
51
|
|
52 var int pin;
|
|
53 pin = 13;
|
|
54 // PD13 == output (01)
|
|
55 GPIOD->MODER = (1 << (pin << 1));
|
|
56 GPIOD->ODR = (1 << pin);
|
|
57
|
|
58 while(true) {}
|
|
59 }
|
|
60
|