凹语言点亮 AVR 单片机
- 时间:2022-11-24
- 撰稿:史斌@凹语言
- 转载请注明原文链接:https://wa-lang.org/smalltalk/st0014.html
目前凹语言已经成功运行在 Arduino 单片机平台上,下面是运行效果,一个四位计数器。
感兴趣的同学,可以参照我提供的步骤,来体验一下。
安装开发环境
安装凹语言
推荐手动下载编译最新的版本。
cd $HOME
git clone https://gitee.com/wa-lang/wa.git
cd wa
go build
export PATH=$HOME/wa:$PATH
安装 Arduino 开发环境
安装 LLVM
- Windows 下载
- MacOS 下载
- Linux 安装方式
apt-get install llvm clang -y
添加路径
安装完成后,需要把 LLVM 包里的 bin 目录,加入 PATH 环境变量。在 Linux 和 MacOS 上按照如下方式操作。
export LLVM_PATH=...
export PATH=$LLVM_PATH/bin:$PATH
Windows 上可以在 PowerShell 里添加,或者修改系统设置。
购买硬件和安装硬件
硬件信息
Arduino Uno 开发板
四段数码管模块
接线方式
Arduino 板 | 数码管小板 | 颜色 |
---|---|---|
5V | VCC | 绿 |
2 | SCLK | 黄 |
1 | RCLK | 橙 |
0 | DIO | 红 |
GND | GND | 棕 |
编译运行 Demo 程序
# 需要预先安装 WA 和 LLVM,按照本文前面的操作指导进行。
cd $HOME
git clone https://gitee.com/wa-lang/wa-arduino.git
cd $HOME/wa-arduino/4-digit_led/demo_wa/
wa native --target=avr demo.wa
将会在 demo_wa/
目录下生成一个子目录 demo/
,里面包含了编译生成的 Arduino 工程。用 Arduino IDE 打开 demo_wa/demo/demo.ino
,选择 Arduino Uno 开发板以及对应的 COM 端口,即可运行,看到四位数码管计数的效果。
编译流程
wa source ---> LLVM IR ---> AVR assembly.
Arduino 开发板环境需要 Arduino 的 runtime 库才能正常运行,因此输出的是 Arduino 工程。包含一个简短的包装文件 demo.ino
。
和从 demo.wa
翻译过来的 AVR 汇编程序 demo.S
,这才是真正驱动数码管计数的功能代码。
未来的工作
- wa 命令直接输出 AVR 的 HEX 文件
- wa 命令集成 AVR 烧录工具 avrdude