blob: 36cfcf07a0ed53d2b6c77e252951a00cf07911e7 (
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
//go:build stm32f4disco
// +build stm32f4disco
package machine
import (
"device/stm32"
"runtime/interrupt"
)
const (
LED1 = LED_GREEN
LED2 = LED_ORANGE
LED3 = LED_RED
LED4 = LED_BLUE
LED_GREEN = PD12
LED_ORANGE = PD13
LED_RED = PD14
LED_BLUE = PD15
LED = LED_BUILTIN
LED_BUILTIN = LED_GREEN
)
const (
BUTTON = PA0
)
// Analog Pins
const (
ADC0 = PA0
ADC1 = PA1
ADC2 = PA2
ADC3 = PA3
ADC4 = PA4
ADC5 = PA5
ADC6 = PA6
ADC7 = PA7
ADC8 = PB0
ADC9 = PB1
ADC10 = PC0
ADC11 = PC1
ADC12 = PC2
ADC13 = PC3
ADC14 = PC4
ADC15 = PC5
)
// UART pins
const (
UART_TX_PIN = PA2
UART_RX_PIN = PA3
)
var (
UART1 = &_UART1
_UART1 = UART{
Buffer: NewRingBuffer(),
Bus: stm32.USART2,
TxAltFuncSelector: AF7_USART1_2_3,
RxAltFuncSelector: AF7_USART1_2_3,
}
DefaultUART = UART1
)
// set up RX IRQ handler. Follow similar pattern for other UARTx instances
func init() {
UART1.Interrupt = interrupt.New(stm32.IRQ_USART2, _UART1.handleInterrupt)
}
// SPI pins
const (
SPI1_SCK_PIN = PA5
SPI1_SDI_PIN = PA6
SPI1_SDO_PIN = PA7
SPI0_SCK_PIN = SPI1_SCK_PIN
SPI0_SDI_PIN = SPI1_SDI_PIN
SPI0_SDO_PIN = SPI1_SDO_PIN
)
// MEMs accelerometer
const (
MEMS_ACCEL_CS = PE3
MEMS_ACCEL_INT1 = PE0
MEMS_ACCEL_INT2 = PE1
)
// Since the first interface is named SPI1, both SPI0 and SPI1 refer to SPI1.
// TODO: implement SPI2 and SPI3.
var (
SPI0 = SPI{
Bus: stm32.SPI1,
AltFuncSelector: AF5_SPI1_SPI2,
}
SPI1 = &SPI0
)
const (
I2C0_SCL_PIN = PB6
I2C0_SDA_PIN = PB9
)
var (
I2C0 = &I2C{
Bus: stm32.I2C1,
AltFuncSelector: AF4_I2C1_2_3,
}
)
|