本文是《Arduino cli 写hello world》
https://blog.csdn.net/lxyoucan/article/details/168245931
的后续。
原本我使用的Arduino IDE 进行开发,总体开发体验还是不错的。对我来说不太习惯的地方如下:
- 文件管理,默认是以标签页面的形式。不是文件树的形式。 文件切换感觉比较麻烦。
- 在hyperland有点兼容性问题,鼠标点菜单经常点不上,菜单就自动消失了。
- 写代码时语法检查与智能提示不灵敏。
VSCode 安装插件
安装 clangd
配置 clangd 代码补全
这是 VSCode 开发 Arduino 项目时,比较容易遇到问题的地方。
因为 Arduino 的头文件往往存放在用户目录下,例如:
bash
~/.arduino15/packages/esp32/hardware/esp32/
如果没有配置好代码补全工具,VSCode 可能会提示:
bash
Arduino.h: file not found
即使 Arduino CLI 能正常编译。
我推荐安装 VSCode 的 clangd 扩展,并让 Arduino CLI 自动生成编译数据库。
先执行:
bash
arduino-cli compile \
--build-path ./build \
--only-compilation-database \
.
Arduino CLI 支持生成 compile_commands.json,其中记录了编译器参数、头文件搜索路径等信息。
这样就可以让代码补全正常了。
sketch.yaml
项目根目录中增加sketch.yaml
yaml
default_fqbn: esp32:esp32:esp32c3:CDCOnBoot=cdc
default_port: /dev/ttyACM0
default_port_config:
baudrate: 115200
之后就能这样操作:
bash
# 编译
arduino-cli compile .
# 编译并上传
arduino-cli compile --upload .
# 查看串口输出
arduino-cli monitor
至此就可以开心的用VSCode做开发啦,真舒服。
配置 VSCode 快捷任务
这是比较关键的一步。
在项目中创建 .vscode/tasks.json:
.vscode/tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Arduino: 编译",
"type": "shell",
"command": "arduino-cli",
"args": [
"compile",
"--build-path",
"${workspaceFolder}/build",
"${workspaceFolder}"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
},
{
"label": "Arduino: 烧录",
"type": "shell",
"command": "arduino-cli",
"args": [
"upload",
"--input-dir",
"${workspaceFolder}/build",
"${workspaceFolder}"
],
"dependsOn": ["Arduino: 编译"],
"problemMatcher": []
},
{
"label": "Arduino: 串口监视",
"type": "shell",
"command": "arduino-cli",
"args": [
"monitor",
"-p",
"/dev/ttyACM0",
"--config",
"baudrate=115200"
],
"isBackground": true,
"problemMatcher": []
}
]
}
配置好之后,在 VSCode 中:
| 操作 | 使用方式 |
|---|---|
| 编译 | Ctrl + Shift + B |
| 烧录 | Ctrl + Shift + P → Tasks: Run Task → Arduino: 烧录 |
| 串口监视 | Tasks: Run Task → Arduino: 串口监视 |
烧录任务会先编译,再上传,不容易出现上传旧固件的问题。
需要注意,串口监视任务会持续占用串口。再次烧录前,可能需要先停止它。
如果你报错arduino-cli 命令找不到的话,
,可以将 arduino-cli 放到:
bash
/usr/local/bin/arduino-cli

