repo_description: Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
repo_topics: adafruit arduino arm avr esp32 gpio i2c llvm microbit microcontroller nrf51 nrf52 samd21 spi stm32 tinygo wasi wasm webassembly
code: //go:build lgt92
  
  package machine
  
  import (
  	"device/stm32"
  	"runtime/interrupt"
  )
  
  const (
  	LED1 = PA12
  	LED2 = PA8
  	LED3 = PA11
  
  	LED_RED   = LED1
  	LED_BLUE  = LED2
  	LED_GREEN = LED3
  
  	// Default led
  	LED = LED1
  
  	BUTTON = PB14
  
  	// LG GPS module
  	GPS_STANDBY_PIN = PB3
  	GPS_RESET_PIN   = PB4
  	GPS_POWER_PIN   = PB5
  
  	MEMS_ACCEL_CS   = PE3
  	MEMS_ACCEL_INT1 = PE0
  	MEMS_ACCEL_INT2 = PE1
  
  	// SPI
  	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
  
  	// LORA RFM95 Radio
  	RFM95_DIO0_PIN = PC13
  
  	// TinyGo UART is MCU LPUSART1
  	UART_RX_PIN = PA13
  	UART_TX_PIN = PA14
  
  	// TinyGo UART1 is MCU USART1
  	UART1_RX_PIN = PB6
  	UART1_TX_PIN = PB7
  
  	// MPU9250 Nine-Axis (Gyro + Accelerometer + Compass)
  	I2C0_SCL_PIN = PA9
  	I2C0_SDA_PIN = PA10
  )
  
  var DefaultUART = UART0
  
  var (
  
  	// Console UART (LPUSART1)
  	UART0  = &_UART0
  	_UART0 = UART{
  		Buffer:            NewRingBuffer(),
  		Bus:               stm32.LPUART1,
  		TxAltFuncSelector: 6,
  		RxAltFuncSelector: 6,
  	}
  
  	// Gps UART
  	UART1  = &_UART1
  	_UART1 = UART{
  		Buffer:            NewRingBuffer(),
  		Bus:               stm32.USART1,
  		TxAltFuncSelector: 0,
  		RxAltFuncSelector: 0,
  	}
  
  	// MPU9250 Nine-Axis (Gyro + Accelerometer + Compass)
  	I2C1 = &I2C{
  		Bus:             stm32.I2C1,
  		AltFuncSelector: 6,
  	}
  	I2C0 = I2C1
  
  	// SPI
  	SPI0 = &SPI{
  		Bus: stm32.SPI1,
  	}
  	SPI1 = SPI0
  )
  
  func init() {
  	// Enable UARTs Interrupts
  	UART0.Interrupt = interrupt.New(stm32.IRQ_AES_RNG_LPUART1, _UART0.handleInterrupt)
  	UART1.Interrupt = interrupt.New(stm32.IRQ_USART1, _UART1.handleInterrupt)
  }
  