最近因为接了一个特别赶的嵌入式开发任务,而本人并没有系统的学习过嵌入式开发...只是稍微写过一点点51的C程序,但是工期特别赶,所以就想到了有电子积木美称的Arduino

不过习惯了JB全家桶的代码补全和自动格式,所以就想着能不能在Clion上配置一下Arduino的编写

已经有许多前人帮我们探好了路,所以直接搜索Clion Arduino这样的关键词也能搜到许多教程,我选用的是Clion中直接搜索就能搜索到的Arduino插件来编写,如图所示,安装上这个插件之后就可以创建Arduino工程了,但是不要连同下面的Serial Port Monitor一起启用,作者文档中提到这俩插件会产生冲突。

这里贴一下Arduino Support插件的源地址https://plugins.jetbrains.com/plugin/11301-arduino-support/https://github.com/vsch/CLionArduinoPlugin

需要注意的是,Arudino Support引用了Arduino CMake,而Arduino CMake的文档中使用的是mingw32,虽然我测试过Mingw64编译也不会报错,但是不知道会不会有什么其他的bug

这里可以直接创建Arduino工程,记得选择Programmer和Port,这样就能直接在Clion里编译上传到开发板了

创建了工程之后你会发现CMake并不能通过编译,需要修改一下CMakeList.txt,将<@PROJECT_NAME@>的@和<>号去掉,将set(${PROJECT_NAME}_SRCS)的注释取消掉,创建一个自己的cpp文件,并且将自己的cpp文件添加进_SRCS后,Reload CMake就能通过CMake的编译了

这里贴了一份我自己能通过编译的CMake文件

cmake_minimum_required(VERSION 2.8.4)
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/ArduinoToolchain.cmake)
set(CMAKE_CXX_STANDARD 17)
set(PROJECT_NAME untitled2)
set(${PROJECT_NAME}_BOARD uno)
# set(ARDUINO_CPU)
project(${PROJECT_NAME})
set(${PROJECT_NAME}_SRCS test.cpp)
# set(${<@PROJECT_NAME@>}_HDRS)
# set(${<@PROJECT_NAME@>}_LIBS)
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/)
# add_subdirectory()
# set(${<@PROJECT_NAME@>}_SKETCH untitled2.ino)
set(${PROJECT_NAME}_PROGRAMMER arduinoisp)
set(${PROJECT_NAME}_PORT COM3)
# set(${<@PROJECT_NAME@>}_AFLAGS -v)
# set(uno.upload.speed 9600)
generate_arduino_firmware(${PROJECT_NAME})

CMake通过之后要怎么样上传编译后的文件到开发版上呢?其实你只要set_PORT口之后就会产生一个upload的选项,设置完Target之后就可以直接Build了,注意这里最好不要用Run,点左边的Build使用Run的话,将会尝试以32位应用的方式运行编译好的文件,不出意外是不可能运行的,还会报个错

这样就可以上传你的代码到Arduino开发板了,如果需要串口通信,可以在最底部打开Arduino Support,设置一下串口和波特率就可以直接使用了(编译上传的时候会自动断开串口,完成后自动重连,这也是为什么Serial Port Monitor和这个插件存在兼容性问题的原因,Serial Port Monitor不会自动断开串口,会导致上传代码时串口被占用,需要手动解除占用)

如果需要调用第三方的库,这边建议是将源码文件直接拖到项目目录下,编译文件列表里加入目标文件,这样会避免很多蜜汁问题orz

Rua,第一次尝试写教程,如有错误,请多指教... 后续也可能会继续更新


今天你摸鱼了吗?