目录

  • 一、环境准备
  • 二、下载STM32CubeMX固件库
  • 三、使用STM32CubeMX创建工程
  • 四、CLion配置
  • 五、CMake简单操作和添加DSP库
    • CMake简单操作
    • 添加DSP库
  • 五、调试时查看外设寄存器。
  • 六、使用JLinkGDBServer进行调试
  • 七、总结

下文提到的资源链接

一、环境准备

需要准备的软件有arm-none-eabi-gcc编译器,CLion,STM32CubeMX,OpenOCD
还有可选的JLink驱动套件

  • arm-none-eabi-gcc编译器可以再其官网下载。
    下载之后解压,在/etc/profile中设置PATH环境变量即可
  • CLion也是官网下载,但是这里不讲破解。
  • JLink还是官网下载对应操作系统的安装包。
  • OpenOCD可以通过apt安装。sudo apt install openocd
  • STM32CubeMX依然是通过官网下载。要注意的是STM32CubeMX是基于Java的软件,所以需要先安装Java,使用apt安装默认版本即可sudo apt install default-jre,运行其中的SetupSTM32CubeMX-****.linux按照图形界面安装即可,操作与Windows大同小异,就是不会自动创建桌面图标

二、下载STM32CubeMX固件库

安装好STM32CubeMX之后第一次启动需要设置固件库的路径并下载固件库。

点击右侧第二个按键INSTALL/REMOVE打开固件库列表

勾选需要的固件库下载安装。我已经装过了。(这个仅需设置一次)

三、使用STM32CubeMX创建工程

安装完成后回到主界面,点击中间深蓝色框内的第一个按键ACCESS TO MCU SELECTOR打开MCU列表,如果出现一个进度条没完没了可以直接关闭,不影响。

选择MCU,通过左侧上方的搜索框可以快速找到需要的MCU,我使用STM32F103C8T6为例。
双击列表的那一栏选择。

设置PC13引脚为输出,来一个点灯,RCC中的外部高速时钟为图片中的,SYS的debug为Serial Wire。
其他的都可以不设置,SYS的debug是一定一定要设置的,否则下一次下载程序的时候会因为调试接口关闭无法下载,如果还是忘记了可以在下载开始的一瞬间按下复位键手动复位,时机自己摸索去吧,多试几次就能成功,问题不大。

转到第二个选项卡,时钟设置直接把HCLK输入最高的72M然后回车让它自动设置。

给自己的工程起个名字,选择一个路径,Toolchain/IDE选择SW4STM32,这是CLion能够解析的。

转到左侧第二个选项卡,的第二个框的第一个选项,这个选项能把每一个外设的初始化代码分别写在独立的.c/.h文件里,更加整洁。
Cube的配置到此结束,点击右上角的GENTER CODE来生成你的工程。完事后直接关掉弹窗

四、CLion配置

打开CLion。

CLion打开,找到工程文件夹里的ioc文件然后作为一个工程打开。

打开CLion的设置,找到Build,Execute,Deployment->Embedded Development选项,填入OpenOCD的路径和Cube的路径并测试,如果是apt安装的openocd路径应该是一样的,Cube自己找,完成后保存。(这个仅需设置一次)

还是Build,Execute,Deployment,找到第一个Toolchain选项,点击加号选择System新建一个工具链,按照arm-none-eabi-gcc编译器的路径分别找到bin/arm-none-eabi-gccbin/arm-none-eabi-g++bin/arm-none-eabi-gdb作为C编译器,C++编译器,调试器。CMake和make自动就好。(这个仅需设置一次)

转到Toolchain下方的CMake选项卡,把右侧焦点的工具链选项设置为刚刚新建的工具链到此,工程的编译工具就设置完了。
回到CLion主界面,CMake已经自动运行一次了配置成功了。

右上角的生成目标选择***.elf然后点击旁边的锤子进行编译,可以看见已经编译成功了。
自己在Src/main.c的主循环里写两行点灯代码再编译一遍。

  /* USER CODE BEGIN WHILE */while (1){HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);HAL_Delay(300);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}

一定要写在 USER CODE BEGIN 注释和USER CODE END注释之间,否则Cube重新生成的时候会抹掉。

右上角的生成目标打开第一个配置选项,第一行的Target点击,选中****.elf然后第二行的也自动配置了。
找到配置的第三行Board config file,点最后面的Assist。在弹窗中随便找一个,然后点击下方中间的Copy to Project & Use复制到自己的工程里,然后把原文删掉,替换成如下的。

interface jlink                                         #使用JLink
transport select swd                             #SWD接口
source [find target/stm32f1x.cfg]    #stm32f1x的配置文件

如果嫌麻烦的可以找到模板的目录,把自己改好重命名的放进去,这样就可以直接选择不用改动了。
三行改完之后看见最下面的error消失了,OK关闭。
现在就可以点击运行箭头进行程序下载或者debug了。

五、CMake简单操作和添加DSP库

CMake简单操作

在CMakeLists_template.txt的40、42、44行分别是添加全局宏定义,添加源文件,添加include路径的位置,不要更改原来的的,往里填自己的文件就行了,在源文件使用的file函数中也可以使用*.c这样的通配符,宏定义要在前面加-D,就像-DUSE_HAL_DRIVER,中间没有空格,添加完后在Project栏中对ioc文件右键,选择Update CMake Project with STM32CubeMX来更新CMake。CMake就配置成功了。这样就能实现基本的添加文件和宏的操作了。

添加DSP库

Cube不自动生成DSP库的文件,需要自己添加,可以在Keil的CMSIS库中找到也可以直接在我这里下载。
复制DSP文件夹到工程根目录里,然后在CMakeLists_template.txt第44行的include_directories和add_executable之间插入下面四行,重新生成CMakeLists.txt编译就可以了。

#DSP
add_definitions(-DARM_MATH_CM3 -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING)
include_directories("DSP/Include")
link_directories(DSP/Lib/GCC)
link_libraries(libarm_cortexM3l_math.a)

这个是F1的,没有FPU,如果是F4的有FPU的话在22,23行有注释Uncomment for hardware floating point
取消注释就能启用FPU,库libarm_cortexM3l_math.a也要换成对应的,然后自己添加的add_definitions就和他的重复了可以注释掉了,关于F7,H7那种有双精度FPU的没有试过,应该还要改FPU_FLAGS的内容。

五、调试时查看外设寄存器。


在OCD调试控制台的第三个选项卡有一个Peripherals选项,显示它需要对应芯片的svd文件,在我的wj中有SVD文件夹,里面有F1和F4的芯片的svd文件选择对应的复制到工程里然后Load,弹出的外设选择需要的,不嫌乱就全选,反正还可以点击旁边的小漏斗再筛选。

最终的效果就是这样的,CLion不像Keil,它不能事实更新观察变量或者寄存器的值,只有出现暂停的时候才能刷新,除了配置麻烦点这是唯一的不足,但是看在CLion其他优秀的功能上可以忍(手动滑稽)。

六、使用JLinkGDBServer进行调试


还是选择目标的下拉框,配置,添加一个Embedded GDB Server,如图配置一下就可以用了,实际上使用效果不如OpenOCD。
JLinkGDBServer的GDB端口默认是2331,-device后面的是芯片名字,剩下的照抄就行。

localhost:2331
/usr/bin/JLinkGDBServer
-select USB -device STM32F103C8 -if SWD -speed 4000 -noir

七、总结

Linux上使用CLion开发STM32应该是最好的选择了,win上面OpenOCD的驱动问题实在恶心,JLinkGDBserver只能调试又不能下载程序。所以CLion还是再Linux上好使。JLinkGDBServer因为我是JLinkOB,JLink驱动版本过高没有办法用,如果是V9或者更高的是完全没有问题的,JLink驱动套件中还是有很多强大的工具的,所以带上它了。CLion一些“过分细心”的错误提示高亮在设置里面关一关就行,总体是使用体验还是不错的,这样在Linux下开发单片机和其他Linux程序就不用频繁切换系统了,还不错的选择。

Ubuntu上使用CLion开发STM32,并使用JLink下载、调试相关推荐

  1. 龙邱STM32单片机用J-LINK下载无法被识别的解决方法

    龙邱STM32单片机用J-LINK下载无法被识别的解决方法 参考文章: (1)龙邱STM32单片机用J-LINK下载无法被识别的解决方法 (2)https://www.cnblogs.com/Arag ...

  2. Ubuntu上安装CERN开发的ROOT软件

    Ubuntu上安装CERN的ROOT软件 ROOT是欧洲核子中心(CERN)开发的一个数据分析软件,广泛用于粒子物理数据分析.本文主要介绍其在Ubuntu18.04上的安装方法,安装版本为ROOT  ...

  3. 在ubuntu下设置eclipse开发STM32等嵌入式设备

    之前为了能够让ROS与底层能够顺利通讯,我采用可开源开发板arduino ,因为arduino有ROS的库,能够按照ROS wiki上所给的教程就可以顺利的开发,但由于arduino的局限性,我觉得是 ...

  4. Ubuntu下使用GCC开发STM32的环境的搭建

    注:从ubuntu linux下建立stm32开发环境: GCC安装以及工程Makefile建立转载. 1.STM 32 GCC 安装 stm32 属于arm cortex-m系列thumb指令集,所 ...

  5. ubuntu上搭建rtt开发环境并编译2K1000 bsp

    系统介绍: RT-Thread是一个集实时操作系统(RTOS)内核.中间件组件的物联网操作系统: rt-thread特点: 资源占用极低,超低功耗设计,组件丰富,支持高性能应用,跨平台:类似vxWor ...

  6. 在ubuntu环境下,开发stm32使用ram调试程序教程

    环境 ubuntu 16.04 编译器 vscode 仿真器 ST-link v2 开源调试软件 openocd 目标: 将代码烧录到stm32当中运行 使用makefile脚本烧录 boot0和bo ...

  7. Clion开发STM32之OTA升级模块(最新完整版)

    前言 程序分为上位机部分.BootLoader.App程序 上位机程序使用的是C#进行开发,目前只做成控制台部分 开发环境依然选择Clion 芯片采用的是stm32f103vet6 升级模块已和驱动层 ...

  8. unbuntu 安装things_在 Ubuntu 上搭建 thingsboard 开发环境

    1. 工具 1.1 Java Thingsboard 2.4 需要 Java 8. sudo apt-get update sudo apt-get install openjdk-8-jdk 1.2 ...

  9. 使用Clion开发STM32

    环境配置 STM32CubeMX 正常安装即可.下载链接 MinGW 点击下载安装器.下载链接 选择安装 改变一下路径 等待下载完成后点击Continue进入下一步,勾选Basic Setup里的全部 ...

最新文章

  1. JavaScript中的+运算
  2. 软件系统非功能测试方法,非功能测试方案模板
  3. nik collection滤镜
  4. Redis的两种持久化方式
  5. android Sqlite小记
  6. 【代码刷题】排序算法总结(python实现)
  7. matlab多种分配方案_基于MATLAB的水资源优化分配问题动态规划解法
  8. 如何在SQL Server数据库中加密数据
  9. Java基础入门笔记-包装类
  10. python 不等于_python怎么一次输入两个数
  11. [导入]CodeRushNET(Eval)-2.1.3.exe
  12. mybatis pageHelper 不分页
  13. 1481c语言合法标识符,c语言试题答案集
  14. python静态分析工具_7 个顶级静态代码分析工具
  15. 【css】css实现图片或动图边缘模糊化处理(附示例代码)
  16. “手绘爷爷”:花甲之年再续“冰城之恋”
  17. 成功转行IT软件测试,分享下我本科毕业2年转行的经历
  18. 【我的前端】网站开发:设计响应式网站的八大因素
  19. Matlab 图像几何变换
  20. matplotlib设置坐标轴颜色及画布背景色

热门文章

  1. 针对初学者的PID算法教程,以及趣味总结
  2. [python]简易计算器
  3. 智慧城市:社会综合治理平台建设解决方案
  4. 计算机网络工程施工,一种计算机网络工程施工用墙体布线盒的制作方法
  5. 雅思IELTS精讲——【作文】
  6. 平流式沉淀池计算例题_(完整版)平流沉淀池设计计算.doc
  7. java校园医院门诊管理系统ssm
  8. 漫谈 · 软件设计中的具象化
  9. Java项目-基于Springboot+Vue实现在线音乐网站
  10. html5第八课时,属性前缀