Skip to content
On this page

凹语言点亮 AVR 单片机

目前凹语言已经成功运行在 Arduino 单片机平台上,下面是运行效果,一个四位计数器。

alt 0

感兴趣的同学,可以参照我提供的步骤,来体验一下。


安装开发环境

安装凹语言

推荐手动下载编译最新的版本。

cd $HOME
git clone https://gitee.com/wa-lang/wa.git
cd wa
go build
export PATH=$HOME/wa:$PATH

安装 Arduino 开发环境

安装 LLVM

apt-get install llvm clang -y

添加路径

安装完成后,需要把 LLVM 包里的 bin 目录,加入 PATH 环境变量。在 Linux 和 MacOS 上按照如下方式操作。

export LLVM_PATH=...
export PATH=$LLVM_PATH/bin:$PATH

Windows 上可以在 PowerShell 里添加,或者修改系统设置。


购买硬件和安装硬件

硬件信息

接线方式

Arduino 板数码管小板颜色
5VVCC绿
2SCLK
1RCLK
0DIO
GNDGND

alt 1alt 2alt 3


编译运行 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 端口,即可运行,看到四位数码管计数的效果。

alt 4


编译流程

wa source ---> LLVM IR ---> AVR assembly.

Arduino 开发板环境需要 Arduino 的 runtime 库才能正常运行,因此输出的是 Arduino 工程。包含一个简短的包装文件 demo.ino

alt 5

和从 demo.wa 翻译过来的 AVR 汇编程序 demo.S,这才是真正驱动数码管计数的功能代码。

alt 6


未来的工作

  • wa 命令直接输出 AVR 的 HEX 文件
  • wa 命令集成 AVR 烧录工具 avrdude