type
date
slug
category
icon
password
参考资料一、环境搭建二、新建项目步骤1:CLion创建CubeMX项目步骤2:排查实时保护步骤3:使用 STM32CubeMX 打开 “.loc”后缀文件,开始配置项目;步骤4:STM32CubeMX配置事项步骤5:程序编译步骤6:烧录程序 & 在线调试(Board Config File)步骤7:调试查看外设寄存器三、printf重定向问题四、添加版本控制添加gitignore工具初始化仓库
参考资料
基于Clion、CubeMX、HAL库、Cmake搭建开发环境。
一、环境搭建
- 下载 clion 并安装(有试用计划)
- 下载 stm32cubemx 并安装
- 下载 MinGW 并安装
- Windows: 安装Msys2,参照 MSYS2,安装后,将bin文件夹添加进入环境变量,打开终端,验证
gcc -v
。 - Ubuntu 无需安装。
- 安装 arm 交叉编译器
- Ubuntu 安装
b. Windows安装
从Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer下载安装包,解压后,路径添加到环境变量。打开终端,使用arm-none-eabi-gcc -v验证安装成功与否。
- 安装stlink驱动
- 安装openocd
- Ubuntu 安装
b. Windows 安装
从Releases · xpack-dev-tools/openocd-xpack (github.com)下载Windos下解压,解压路径记录下,后面配置用到
- 安装cmake指定版本
- Ubuntu 安装
- Windows安装:下载安装包,添加环境变量
- 添加工具链, File|Settings|Build,Execution,Deployment|Toolchains
- Build Tools:添加msys64路径下mingw32-make.exe。
- C/C++ Compiler:添加arm 交叉编译器路径下编译器。

二、新建项目
步骤1:CLion创建CubeMX项目
打开CLion,点击 New | Project | STM32CubeMX创建项目。项目默认基于STM32F030(后面可更改)。

自动创建结束,会跳出板载配置选择(这里是OpenOCD调试配置所需,我们先选择Skip)。

步骤2:排查实时保护
IDE检测到Microsoft Defender启用了实时保护功能,这可能会严重降低IDE的性能。
点击Atuomatically,将以下路径添加到Defender的文件夹排除列表中。

步骤3:使用 STM32CubeMX 打开 “.loc”后缀文件,开始配置项目;

步骤4:STM32CubeMX配置事项
STM32CubeMX详细使用教程不在此赘述,只提几点注意事项:

- 注意1:CubeMX 项目名称一定要和在Clion中建立名称一致,演示中使用test;
- 注意2:项目Location位置为根文件上一层级,见上图文字;
- 注意3:CubeMX 导出为 CubeMX IDE 类型,勾选Generate Under Root;
- 注意4:点击生成代码,选择覆盖刚刚默认配置的STM32F030项目,可以返回CLion中查看新生成项目;


- 注意5:若CubeMX 更新,CMakeLists.txt 会被更新。修改的内容也会被覆盖,可以修改 CMakeLists_template.txt模板文件,这样对于CMakeLists.txt 的修改就会保存下来。
- 注意6:修改CMakefiles,新添头文件搜索文件夹和源文件方法
步骤5:程序编译
编译遇到如下错误:
因为寄存器操作指令使用了硬件浮点操作,而在CMakeLists.txt 中使用软浮点,可以通过反注释以下编译选项解决。
移动main.c main.h进入UserApp
步骤6:烧录程序 & 在线调试(Board Config File)
在Keil里面我们烧录程序的时候要指定使用的下载器(J-Link、ST-Link、CMSIS-DAP等),CLion烧录程序之前也需要对下载器进行一些设置。
点击编译按钮旁边的配置栏下拉,选Edit Configurations,打开配置窗口

- 工程根目录下新建一个文件夹Tools,在里面新建一个配置文件daplink.cfg (DapLink作为仿真器)

- ST-Link作为仿真器
如果对自己的芯片不知道怎么设置,可以参考OpenOCD自带的一系列配置文件,路径在OpenOCD安装目录的share\openocd\scripts下。只需要关注这几个目录:
- board:板卡配置,各种官方板卡
- interface:仿真器类型配置,比如ST-Link、CMSIS-DAP等都在里面
- target:芯片类型配置,STM32F1xx、STM32L0XX等等都在里面
设置好配置文件之后,就可以点击下载或者调试按钮进行下载和在线调试了。
步骤7:调试查看外设寄存器
三、printf
重定向问题
- keil 编译器,
printf
函数我们需要重定向fputc
函数
- Clion中,由于使用 gcc-arm-none-eabi编译器,可以在usart.c 重定向
__io_putchar
和__io_getchar
函数。也可以直接重写Core/Src/syscalls.c文件int _write(int fd, char *ptr, int len)
和int _read(int file, char *ptr, int len)
方法。 - usart.c
- printf()和scanf()都是用轮询方式,没有使用中断。调用scanf()在串口助手中输入数据时,必须以空格结束,然后点击发送,否则无法完成发送(mcu会认为串口一直没有收到数据),一直处于判断串口Flag的状态(__HAL_UART_GET_FLAG()),陷入UART_WaitOnFlagUntilTimeout() 函数下的while循环当中出不来。
- 调用setvbuf(stdout, NULL, _IONBF, 0),设置buffer缓存为0,这样一有数据就发送,不然会等到缓存满或有回车换行符才发送。
四、添加版本控制
添加gitignore工具
初始化仓库
方法1:安装git工具,进入根目录,
git init
初始化该目录。方法2:使用CLion IDE 初始化

开发常用版本控制功能参考 开发框架06-集成GIT版本控制系统 。
- Author:felixfixit
- URL:http://www.felixmicrospace.top/article/clion_embedded_ide
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!