[Bonjour STM32]No.番外-优雅地开发STM32

论如何用CLion优雅地开发STM32工程

CLion_EffectPreview

CLion使用截图

为什么用CLion

 众所周知,STM32CubeIDE是基于开源的Eclipse开发的。Eclipse的名声。。。想必不需要我说太多。实际上,STM32CubeIDE比Eclipse更加难用,Eclipse的自动补全触发按键可以调节,于是乎,魔改配置文件来绕开那个反人类的自动提示快捷键成为了可能;然而,到了CubeIDE这里,却行不通,原因嘛。。。很简单:

他 们 把 触 发 按 键 锁 死 了

(干出这种事情的开发团队不如鲨了祭天罢)

什么?你问我为社么不用Keil?答案很简单, 我 是 颜 狗 ,Keil的界面太丑了。并且,CLion继承了JetBrains一贯的风格,自动补全极其流畅,还有很多辅助功能(都是借口)。
Doge

如何使用CLion开发STM32工程

 需要的前期准备

  1. 安装JRE8、STM32CubeMX、CMAKE和CLion
  2. 安装arm-none-eabi-gcc、STLink驱动和OpenOCD

    注:OpenOCD是一个开源单片机Debugger, arm-none-eabi-gcc是cortx-arm的交叉编译器
  3. 想办法激 (Po)(Jie) CLion
    (学生可以用学生邮箱申请白嫖)

  配置流程

  1. 配置ToolChains(Linux用户可以略过此部分)
    CLion_Setting_ToolChains
    没有错,Windows用户还得整一个没有用的MinGW环境(不是很懂这个逻辑)
    (反正Linux大法好就完了)
    然后指定MinGW、CMAKE和arm-none-eabi-gcc的路径。
  2. 配置Embedded Development
    CLion_Setting_EmbeddedDevelopment
    填写OpenOCD和STM32CubeMX的路径
  3. 配置OpenOCD Support
    CLion_Setting_OpenOCDSupport
    再填一遍OpenOCD的路径,注意:此处涉及的路径为OpenOCD的根目录而非可执行文件路径
    (又一个不是很理解意义何在的设定)
  4. 配置Inspections
    虽然不做这一步也能正常的编写&编译,但是总是会报一些警告,波浪线看起来很难受,我这种强迫症患者忍不了。我主要动的东西有三个:Clang-Tidy、Typo和Endless Loop。话不多说,上图:
    CLion_Setting_Inspections_ClangTidy
    CLion_Setting_Inspections_Typo
    CLion_Setting_Inspections_EndlessLoop
    至此我们已经完成了CLion的相关配置。

如何新建一个工程

  1. 使用STM32CubeMX生成代码(工程类型为SW4STM32)
    CubeMX_ProjectType
  2. 用CLion打开CubeMX生成的项目文件夹
    Menu_OpenAsProject
  3. 愉快的开始Coding
    CLion_EffectPreview

最后,留个蓝(红)色的东西,供各位下载学♂习♂资♂料(毕竟留图不留种,*****)
Download

附:我用的主题为Monokai Pro, 插件也已经放到上面了(颜狗本色)
Funny

发表回复

这篇文章有 7 个评论

  1. 第 某不愿透露姓名的麻瓜页

    Clion重定向Printf(用了微雪的代码),写入1024个字符以后才会从串口打印出来,有人遇到过这样的问题吗?

    1. 第 某不愿透露姓名的麻瓜页

      OK,搞定了,字符串末尾加一个\r\n就没这问题了,原因研究中

      1. 第 锦衣页

        这种是Buffer的问题,可能因为编译器的关系,Printf的字符会进Buffer当Buffer刷了之后再通过fputchar送到标准输出流,而再字符串尾加入\r\n可以立即刷新Buffer,你可以试试不加\r\n,Printf之后用fflush手动刷新缓冲区试试看能不能发出去

      2. 第 某不愿透露姓名的麻瓜页

        嗯,可以的,后来看了一下,是CLion特性的问题,下一个新行到达之前不会flush buffer,输出完加一句`fflush(stdout);`可以手动刷新
        。’setbuf(stdout, NULL);’禁用输出缓冲就不用手动刷新了。

  2. Popo

    我单推宋学长!

  3. 第 Floyd-Fish页

    学长牛逼!

  4. 咕咕咕

    来了来了,这教程也太棒了吧