在 CLion 中创建基于 CubeMX 的 STM32 工程
背景介绍: 前几天 Sugar 发了一篇《光荣地获取 JetBrains 正版全家桶许可》。 JetBrains 全家桶里有个 CLion 用于
C/C++
的开发,并且能够用于 STM32 嵌软开发。 CLion 确实是 Sugar 接触过的编程环境中比较好用的一个,本篇就来说一说如何在 Windows 上用 CLion 开发 STM32(基于 STM32CubeMX)。
事先准备
除了要装好
STM32CubeMX
之外还需要:
- 安装 mingw 编译环境;
- 安装 openocd 用于调试;
- 安装嵌入式 GNU 工具链
arm-none-eabi-gcc
等。
一、OpenOCD 的安装
OpenOCD 的 Windows 版是解压就能用的。一共两个步骤:
1、解压到目标路径;
2、将 bin
加入到环境变量中。
完成后打开 Windows PowerShell 通过 openocd -v
命令查看版本,以测试配置正确可用。
二、mingw64 的安装
与 OpenOCD 一样,mingw64 也是解压就能用的,安装方法与 OpenOCD 相同。
完成后重新打开(关闭后再打开)Windows PowerShell 通过 gcc -v
测试配置正确可用。
三、GNU 嵌软编译工具链
GNU 嵌软工具链不需要追求最新,Sugar 选择 ardupilot 推荐的 2017 q2 版。arm-none-eabi
系列是个 Window 的 *.exe
安装文件,Sugar 就是双击安装在默认位置的。
装好后要手动将 bin
的路径加入环境变量,如下:
然后重新打开(关闭后再打开)Windows PowerShell 通过 arm-none-eabi-gcc -v
命令测试配置正确可用。
安装 CLion
1、手动勾选如下选项
2、通过事先准备,安装过程中会自动识别到 mingw 工具链
注意手动换
arm-none-eabi-gdb.exe
调式工具。
使用 CLion 创建基于 CubeMX 的 STM32 工程
1、新建工程
2、STM32CubeMX 操作
这里与正常使用 STM32CubeMX 一样,只是有一点要注意:换芯片后要去覆盖原来自动生成的工程。
3、配置 OpenOCD
4、写代码
5、编译、烧写(下载)、调试
PS
Sugar 之前也用过 Eclipse + GNU 工具链
的组合。Sugar 喜欢轻量、功能好用、能自由配置的软件开发环境,而 Clion 就是这样的开发环境,并且与 Eclipse 比要简单很多。
从使用体验上来说,CLion 与本文的各个组件配合之下感觉上完全不下于 IAR、MDK 的调试体验,而从编辑器角度讲的话简直甩 IAR、MDK 几条街。
本文所述的各种软件依赖 Sugar 都是从官方渠道逐一下载的,下周三(09月02日)在《软件架构训练计划》群里把各种软件打包共享。
- spring-data-mongodb之MongoTemplate 删除操作
- 总结了一些指针易出错的常见问题(六)
- spring-data-mongodb之MongoTemplate 修改数据
- spring-data-mongodb之MongoTemplate 添加数据
- Cannot create a session after the response has been committed
- spring-data-mongodb之环境准备(1)
- java8 Lambda尝尝鲜
- spring-data-mongodb之批量更新操作
- spring-data-mongodb之Aggregation
- spring-data-mongodb之gridfs
- spring-data-mongodb之自增ID实现
- spring-data-mongodb之Repositor操作数据
- mongodb java操作语法
- spring-data-mongodb之查询操作
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法