106 строки
1,6 КиБ
Go
106 строки
1,6 КиБ
Go
//go: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,
|
|
}
|
|
)
|