IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> stm32学习总结:2、搭建基于CLion的stm32开发环境 -> 正文阅读

[嵌入式]stm32学习总结:2、搭建基于CLion的stm32开发环境

stm32学习总结:2、搭建基于CLion的stm32开发环境


1. 前言

我们搭建基于CLion的环境实际主要是基于STM32CubeMx的,在CLion上编辑程序,然后基于c/c++的编译器和交叉编译器对相关库和程序进行编译,编译完烧写到stm32上,然后进行调试,这样就满足了程序开发、调试的基本要求。

2. 相关工具和环境准备

2.1 STM32CubeMX(前置工程创建工具)

STM32CubeMX是ST公司推出的一种自动创建单片机工程及初始化代码的工具,适用于旗下所有STM32系列产品。此软件可以作为eclipse插件形式安装,也可以单独运行,需要安装JAVA运行环境(关于Java环境安装,这里不再赘述,不知道的可以参考这里:https://blog.csdn.net/weixin_39510813/article/details/79834553)。建议采用管理员方式运行,因为ST对软件版本及其集成的库更新频繁,无管理员权限容易安装失败。

下载地址:https://www.st.com/en/development-tools/stm32cubemx.html

在这里插入图片描述

像普通软件一样安装即可。

官方地址下有一些文档,最好看一下如何使用:

在这里插入图片描述

这个其实也有很多人用STM32CubeIDE进行开发的,属于Android studio一样的官方给的IDE,也可以下载学习了解一下:https://www.stmicroelectronics.com.cn/en/development-tools/stm32cubeide.html。

2.2 CLion(顺手的编辑器及集成工具)

实际上我们更多使用CLion更加顺手的编辑器功能,方便补全、跳转等,并且CLion提供了可以将编译工具、烧写工具、调试工具等集成起来的方式,然后编译、烧写、调试就可以在CLion当中一键执行了。

下载地址:https://www.jetbrains.com/clion/download/#section=windows

我下载的2020.3版本的,可以不用登录之类的。

2.3 MinGW(提供c/c++编译环境,也可以使用wsl等)

实际上开发stm32就是交叉编译适用于stm32平台的程序,所以会通过cmake生成适合交叉编译的makefile,然后执行make进行编译,所以这里Mingw主要提供make,CMake都是使用的默认CLion捆绑的。如果不在网上下载的话默认clion也会安装,一般开发Qt也会配置这个,所以这里的选择很多,可以使用Qt带的mingw,也可以使用clion自带的(不确定是不是都自带,可以随便建个项目然后在项目配置中看一下:配置-》构建、执行、部署-》工具链),也可以自己下载。

32位和64位的地址,这里由于我们stm32是需要交叉编译的,有自己的交叉编译工具链,所以这里下载32位或者64位mingw都不影响,我们仅仅使用其带有的make,或者两者都下载,有问题时进行切换选择即可:

http://sourceforge.net/projects/mingw/

http://sourceforge.net/projects/mingw-w64/

2.4 gcc-arm-none-eabi(交叉编译工具链及GDB)

这个就像是我们交叉编译arm-linux一样,只不过这里是交叉编译arm-stm32,换了一个交叉编译工具链。

下载地址:https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

注意支持的版本:

在这里插入图片描述

我比较习惯Windows下使用安装方式,也可以下载压缩包解压直接使用,但需要手动加入路径到环境变量,直接安装方式最后一步可以选择将其加入到环境变量中,否则cmake会找不到相关的交叉编译工具链。

如果编译时报如下错误就是交叉编译工具链没有安装或者没有添加到环境变量中:

在这里插入图片描述

2.5 OpenOCD(烧写调试工具)

就像我们之前安装Android开发环境的NDK搭建时的LLDB也是用来调试的,但是我们通常用不到,都是用logcat直接看日志的,所以如果stm32有串口打印日志调试的话也可以暂时不安装OpenOCD。如果要安装的话可以在CLion上搜索插件OpenOCD:

在这里插入图片描述

也可以自行下载安装:https://www.gnutoolchains.com/arm-eabi/openocd/

后面我们再统一进行配置。

3. 新建stm32项目及CLion配置集成

接下来通过CLion将各部分整合起来即可。

3.1 新建项目

在这里插入图片描述

3.2 创建项目源

在这里插入图片描述

3.3 STM32CubeMX配置及生成代码

一般选择连接到mcu选择,这里我们作为示例也可以选择最后一个连接一个示例选择:

在这里插入图片描述

然后根据自己手头的mcu的参数进行选择,比如我这里是STM32L471RE,在左上角搜索即可:

在这里插入图片描述

然后进行引脚、时钟配置,这个需要一些电子相关的基础,不太清楚的软工可以问一下硬件工程师,不懂就问,没有啥不好意思的,但是不要跟个大爷一样的,别人没有义务免费帮助你(我们这里还没有具体测试的代码,等下一节总结学习点亮LED灯的时候再具体说一下这个配置,这里先随便选择一下保证可以编译成功就行):

在这里插入图片描述

项目管理这里注意一下IDE,目前看IAR、MDK等IDE都支持了,这里我们CLion使用SW4STM32,还有项目名称不能带一些特殊符号:

在这里插入图片描述

还有一些其它的功能暂时没有摸索过,可以在官网找文档详细看一下,配置好后点击右上角的GENERATE CODE生成代码即可(第一次会下载相关的库等内容),生成完毕后关闭即可:

在这里插入图片描述

3.4 集成配置交叉编译工具链及OpenOCD

在生成代码后重新进入CLion界面,会让你选择.cfg文件,这里需要了解一下OpenOCD的使用:https://openocd.org/pages/documentation.html,OpenOCD是开放式的芯片调试器,是以开发板为单位生成cfg文件进行配置的,所以我们可以根据相似的配置文件来修改适合自己板子的。

在这里插入图片描述

openOCD,一般安装方式的话CLion可以自动检测到:

在这里插入图片描述

之后需要修改.cfg文件,参考:

  • 除注释外,cfg文件原内容如下:

    set FLASH_SIZE 0x20000
    
    source [find target/stm32f1x.cfg]
    
  • 我们修改之后的内容如下:

    # 设置调试器为cmsis-dap
    source [find interface/cmsis-dap.cfg]
    # 设置调试器所用接口为SWD
    transport select swd
    # 定义Flash大小为64K
    set FLASH_SIZE 0X10000
    # 设置芯片
    source [find target/stm32f1x.cfg]
    

这个.cfg文件可以在项目配置中找到并拷贝一份出来修改:

在这里插入图片描述

3.5 编译、烧写及调试

编译、调试和一般使用CLion编译、调试c/c++程序没有什么区别,但是烧写和OpenOCD有关系,这块的配置需要结合你的板子和环境进行修改,按照上面给的模板cfg进行调整即可。

从上图也可以看出来,是cmake进行交叉编译生成可执行文件,之后通过OpenOCD配置下载和运行在板子上。

在这里插入图片描述

4. 创建示例项目

CLion创建stm32项目的过程不变。

我们在开始选择连接项目的时候可以选择一个开发板,这种方式可以保证生成的代码一定可以编译过,对于不属于硬件配置过程的时候熟悉项目创建有一定的帮助,创建项目后也可以大致看一下整体项目结构:

在这里插入图片描述

注意创建的项目位置,否则无法自动生成cmake模板,之后点击生成代码,然后都选择Yes即可:

在这里插入图片描述

编译结果:

在这里插入图片描述

5. 最后

由于依赖于硬件平台,并且外设接口需要动态配置,所以创建项目会复杂一些,不管是使用mdk还是IAR等这些工具都需要慢慢熟悉项目创建,上手确实有一些难度,好在像stm32等硬件平台也在封装硬件接口以及开发工具,尽可能少的暴露硬件相关的内容,已经降低了不少的难度,现在也已经涌现出不少的rtos,相信单片机软件开发也会慢慢变得容易上手(什么时候像前端和Java、python等软件开发一样容易上手,那么单片机开发普及程度也会更上一层楼)。

参考:

https://segmentfault.com/a/1190000022798805

https://zhuanlan.zhihu.com/p/63672432

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 12:54:59  更:2021-11-17 12:55:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:40:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码