97 строки
		
	
	
	
		
			1,7 КиБ
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			97 строки
		
	
	
	
		
			1,7 КиБ
		
	
	
	
		
			Go
		
	
	
	
	
	
//go:build lorae5
 | 
						|
 | 
						|
package machine
 | 
						|
 | 
						|
import (
 | 
						|
	"device/stm32"
 | 
						|
	"runtime/interrupt"
 | 
						|
)
 | 
						|
 | 
						|
const (
 | 
						|
	// We assume a LED is connected on PB5
 | 
						|
	LED = PB5 // Default LED
 | 
						|
 | 
						|
	// Set the POWER_EN3V3 pin to high to turn
 | 
						|
	// on the 3.3V power for all peripherals
 | 
						|
	POWER_EN3V3 = PA9
 | 
						|
 | 
						|
	// Set the POWER_EN5V pin to high to turn
 | 
						|
	// on the 5V bus power for all peripherals
 | 
						|
	POWER_EN5V = PB10
 | 
						|
)
 | 
						|
 | 
						|
// SubGhz (SPI3)
 | 
						|
const (
 | 
						|
	SPI0_NSS_PIN = PA4
 | 
						|
	SPI0_SCK_PIN = PA5
 | 
						|
	SPI0_SDO_PIN = PA6
 | 
						|
	SPI0_SDI_PIN = PA7
 | 
						|
)
 | 
						|
 | 
						|
// UARTS
 | 
						|
const (
 | 
						|
	// MCU USART1
 | 
						|
	UART1_TX_PIN = PB6
 | 
						|
	UART1_RX_PIN = PB7
 | 
						|
 | 
						|
	// MCU USART2
 | 
						|
	UART2_TX_PIN = PA2
 | 
						|
	UART2_RX_PIN = PA3
 | 
						|
 | 
						|
	// DEFAULT USART
 | 
						|
	UART_TX_PIN = UART1_TX_PIN
 | 
						|
	UART_RX_PIN = UART1_RX_PIN
 | 
						|
 | 
						|
	// I2C2 pins
 | 
						|
	I2C2_SCL_PIN  = PB15
 | 
						|
	I2C2_SDA_PIN  = PA15
 | 
						|
	I2C2_ALT_FUNC = 4
 | 
						|
 | 
						|
	// I2C0 alias for I2C2
 | 
						|
	I2C0_SDA_PIN = I2C2_SDA_PIN
 | 
						|
	I2C0_SCL_PIN = I2C2_SCL_PIN
 | 
						|
)
 | 
						|
 | 
						|
var (
 | 
						|
	// Console UART
 | 
						|
	UART0  = &_UART0
 | 
						|
	_UART0 = UART{
 | 
						|
		Buffer:            NewRingBuffer(),
 | 
						|
		Bus:               stm32.USART1,
 | 
						|
		TxAltFuncSelector: AF7_USART1_2,
 | 
						|
		RxAltFuncSelector: AF7_USART1_2,
 | 
						|
	}
 | 
						|
	DefaultUART = UART0
 | 
						|
 | 
						|
	// Since we treat UART1 as zero, let's also call it by the real name
 | 
						|
	UART1 = UART0
 | 
						|
 | 
						|
	// UART2
 | 
						|
	UART2  = &_UART2
 | 
						|
	_UART2 = UART{
 | 
						|
		Buffer:            NewRingBuffer(),
 | 
						|
		Bus:               stm32.USART2,
 | 
						|
		TxAltFuncSelector: AF7_USART1_2,
 | 
						|
		RxAltFuncSelector: AF7_USART1_2,
 | 
						|
	}
 | 
						|
 | 
						|
	// I2C Busses
 | 
						|
	I2C2 = &I2C{
 | 
						|
		Bus:             stm32.I2C2,
 | 
						|
		AltFuncSelector: I2C2_ALT_FUNC,
 | 
						|
	}
 | 
						|
 | 
						|
	// Set "default" I2C bus to I2C2
 | 
						|
	I2C0 = I2C2
 | 
						|
 | 
						|
	// SPI
 | 
						|
	SPI3 = SPI{
 | 
						|
		Bus: stm32.SPI3,
 | 
						|
	}
 | 
						|
)
 | 
						|
 | 
						|
func init() {
 | 
						|
	// Enable UARTs Interrupts
 | 
						|
	UART0.Interrupt = interrupt.New(stm32.IRQ_USART1, _UART0.handleInterrupt)
 | 
						|
	UART2.Interrupt = interrupt.New(stm32.IRQ_USART2, _UART2.handleInterrupt)
 | 
						|
}
 |