STM32自学笔记13-CLion IDE的使用

之前笔者一直使用Keil来做单片机工程的编译和调试,有时候觉得软件有点不那么友好,总结下来有以下几个缺点:

  • 在看代码时,好像不支持跨文件浏览方法的调用和定义,似乎有时候又可以,但绝对不如SourceInsight这个软件方便
  • 自动补全功能不是很强,在自己写代码时比较累而且容易出错
  • 不支持插件,所以针对Keil的二次开发来提高生产力的尝试基本没有
  • 总是忘记去设置include路径,编译的时候出错

当然Keil优点也有很多,比较方便的Function浏览框,调试的功能还算完备等。
前几个月在B站看了“稚晖君”的视频,发现他没有用Keil做STM32的IDE,而是使用了比较高级CLion来作为单片机的IDE开发工具,也看了这个大牛在知乎上的扫盲贴,搞得我成功入坑,现在也把Clion作为主力IDE来做开发了。
声明:这篇文章大部分内容都源自“稚晖君”的扫盲帖(地址:https://zhuanlan.zhihu.com/p/145801160),只是把他没讲的一部分补全

一、安装
要安装的软件有

  • STM32CubeMx(这个基本都有)
  • Clion,我安装的是2019.3版本,因为某些众所周知的原因,没有装最新版本
  • MinGW,这是C/C++的编译器,开源的,下载MinGW Installation Manager后根据扫盲贴上的指示下载即可
  • openocd,支持下载仿真用的,在使用ST-LINK时有用
  • arm-none-eabi-gcc,这是ARM的交叉编译工具??讲真这块我没有怎么懂,也许之前的Keil或者IAR把这些都集成进去了,到Clion就需要单独安装了??希望有高手能深入浅出的解释一下。
    安装时要注意arm-none-eabi-gcc的下载版本问题,我第一次安装的时候就是下载了最新的,结果死活没有编译环境。这里推荐还是下载我亲测可用的gcc-arm-none-eabi-9-2019-q4-major-win32.zip

二、配置
按照稚晖君的介绍将Clion上的配置完成即可。有2点验证通过的

  • 使用ST-LINK的需要按照指示写一个stlink.cfg文件放到工程根目录底下,在这里要定位好,这里就不如Keil了,每个工程都要配置这么一下,不是那么方便
    在这里插入图片描述
  • 之前用的printf()scanf()重定向会失效,需要使用教程里面的retarget.cretarget.h。编译的时候会出错,要进入syscall.c里面注释掉重复的函数即可。以后每个工程都要加入这两个文件,加上调试用的*.cfg文件。(这样想来也挺麻烦的啊)

三、实例
一个F103ZET的开发板+ST-LINK+CLion,做一个比较简单的测试程序,功能是按下Key1,开发板的Beep响一下,按下Key2,两个LED灯闪灭。同时在按下的时候,串口给出通知是哪个键按下了。

  1. 在Clion里面新建工程,基于STM32CubeMX,再点击Open with STM32CubeMX,之后会弹出CubeMX的界面
  2. 这里要注意,我的CubeMX每次都是默认STM32F030F4Px这个芯片做的项目,和实际不一样,所以要重新建一个项目,基于自己的芯片,但是项目名称必须和CLion中新建的项目名称相同
  3. CubeMX中的操作和往常没有区别,唯一要注意的点是Project Manager里面的ToolChain/IDE要选SW4STM32
    在这里插入图片描述
    配置完串口、GPIO、Debug后就可以直接Generate Code了,之后进入IDE
  4. While(1)循环中加入这段代码,应该很容易理解
      if(HAL_GPIO_ReadPin(KEY2_GPIO_Port, KEY2_Pin) == RESET) {
          HAL_Delay(50);
          printf("KEY2 pressed \n");
          HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
          HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
      }
      else if(HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin) == RESET) {
          HAL_Delay(50);
          printf("KEY1 pressed\n");
          HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, SET);
          HAL_Delay(500);
          HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, RESET);

然后编译,可能会出现一些错误,例如syscall.c中有函数和retarget.c重复定义等等,按照教程的说明注释掉重复的函数即可。
5. 接上ST-LINK,开始debug,点击小虫的图标在这里插入图片描述即可开始调试。可以在变量窗口看到指定变量值的变化。其他按钮应该都很熟悉,就不展开讲了。
在这里插入图片描述
测试程序完成了预定功能,测试完毕。
相比Keil,感觉Clion的调试功能要强大一些,比如可以直接在代码编辑框看到变量的值,这点比较友好和方便。

另外我还测试了使用CLion直接打开Keil的工程文件,是直接无法编译,推测原因是gcc编译器无法编译。
其他的边学边记录吧。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值