TinyGo是一个用于微控制器的Go编译器,使用WebAssembly(WASM)和命令行工具。它重用了Go语言工具和LLVM一起使用的库,编译用Go编程语言编写的程序。
原示例:
package main
import (
"machine"
"time"
)
func main() {
led := machine.LED
led.Configure(machine.PinConfig{Mode: machine.PinOutput})
for {
led.Low()
time.Sleep(time.Millisecond * 1000)
led.High()
time.Sleep(time.Millisecond * 1000)
}
}
看起来眼熟却又有点乱。因为是golang结合单片机搞出来的。
老家在这里:https://tinygo.org
源码:https://github.com/tinygo-org/tinygo
已经支持的硬件
Adafruit Circuit Playground Express
Adafruit ItsyBitsy M0
Arduino Uno
BBC:Microbit
ST Micro STM32F103XX "Bluepill"
Digispark
Nordic Semiconductor PCA10031
Nordic Semiconductor PCA10040
Nordic Semiconductor PCA10056
Makerdiary nRF52840-MDK
Phytec reel board
Linux下安装
wget https://github.com/tinygo-org/tinygo/releases/download/v0.7.1/tinygo_0.7.1_amd64.deb sudo dpkg -i tinygo_0.7.1_amd64.deb
或者arm版本,例如Pi
wget https://github.com/tinygo-org/tinygo/releases/download/v0.7.0/tinygo_0.7.0_armhf.deb sudo dpkg -i tinygo_0.7.0_armhf.deb
export PATH=$PATH:/usr/local/tinygo/bin
tinygo version
对于使用AVR(Arduino)还需要依赖: sudo apt-get install gcc-avr sudo apt-get install avr-libc sudo apt-get install avrdude
编译并烧录到arduino:tinygo flash -target=arduino examples/blinky1
接口 | 硬件支持 | TinyGo支持 |
---|---|---|
GPIO | YES | YES |
UART | YES | YES |
SPI | YES | Not yet |
I2C | YES | YES |
ADC | YES | YES |
PWM | YES | YES |
看起来暂时没支持I2C,它可以将Pi一起给完善了,不过那可能就搞“大”了(毕竟只是针对单片机)。
简单的看完官网,还是没明白能如何用它,或者语句是什么,或许还需要深入看看代码或者谷哥一下。