软件开发环境搭建

主流的stm32开发环境是MDK-ARM,也就是Keil,近几年ST官方主推使用STM32CubeIDE,但是在尝试过以上两种开发环境后,还是感觉界面过于原始,用起来不顺手,所以这个项目采用Clion作为IDE

参考资料: Clion 官方教程 稚晖君 配置CLion用于STM32开发

硬件准备

材料:

  1. 一块stm32开发板,使用SWD接口(见图中右下角)

image.png

  1. 一个烧录器,可以是ST-Link,也可以是DAPLINK

image.pngimage.png

各种烧录器的简单介绍

区别是STLink只支持ST公司的单片机,而DAPLINK是开源的,支持大多数ARM内核的单片机,挑一个顺手的即可
为了节约成本,我这里使用了一块合宙的F103CBT6核心板,出厂烧录DAPLINK固件,可以当烧录器用
image.png

  1. 母对母杜邦线4根

操作:

  1. 根据开发板上丝印的提示,使用母对母杜邦线连接开发板和烧录器
    • 3 <—-> 3v3
    • G <—-> GND
    • D <—-> SWDIO
    • C <—-> SWCLK
  2. 将烧录器插上电脑(注意连接前一定要仔细检查电源线,不能接反,否则可能烧坏芯片,更严重可能烧坏电脑的USB口)

    环境搭建

    操作系统

Windows 10 (理论上本套方案使用Linux也可以,感兴趣的网上有很多教程)

初始化代码生成器

STM32CubeMX
官网下载最新版本即可

  1. 点击获取软件
  2. 点击Get Lastest
  3. 有ST账号的直接登录,没有的填写信息就可以下载
  4. 安装

软件界面
image.png

编译器

MinGW

MinGW介绍 要知道,GCC 官网提供的 GCC 编译器是无法直接安装到 Windows 平台上的,如果我们想在 Windows 平台使用 GCC 编译器,可以安装 GCC 的移植版本。 目前适用于 Windows 平台、受欢迎的 GCC 移植版主要有 2 种,分别为 MinGW 和 Cygwin。其中,MinGW 侧重于服务 Windows 用户可以使用 GCC 编译环境,直接生成可运行 Windows 平台上的可执行程序,相比后者体积更小,使用更方便;而 Cygwin 则可以提供一个完整的 Linux 环境,借助它不仅可以在 Windows 平台上使用 GCC 编译器,理论上可以运行 Linux 平台上所有的程序。

有的同学可能会问,x86架构编译的程序不是不能给ARM架构的stm32使用吗,的确如此,这里我们主要是使用MinGW的make。
MinGW下载
image.png

  1. 打开exe文件
  2. 点击Install
  3. (可选)修改安装目录,比如在C盘建一个tools文件夹,最终路径为C:\tools\MinGW注意:路径中不能出现空格,否则后续会出现无法Debug的问题
  4. 点击Continue
  5. image.png
    全部选项点击-> Mark for installation
  6. 点击左上角的Installation -> Apply changes -> Apply
  7. image.png
    完成后如图所示

如果一直安装不上,可以参考这个里面的第二个方法,在终端直接安装http://t.csdn.cn/iivL4
image.png

  1. image.png
    将bin文件夹加入到系统变量中的Path
  2. 打开cmd,输入
    1. gcc -v

    image.png
    若显示以上内容,代表安装成功

如果安装不能成功,可以参考其他教程

工程构建工具

CMake下载
选择Windows x64 Installer,按默认安装即可
image.png

交叉编译工具链

在x86架构(即PC)编译的程序不能在ARM架构的stm32上运行,必须使用ARM的交叉编译工具链

在这里下载

选择windows压缩包格式

image.png

可以解压到前面创建的tools文件夹中,并将bin文件夹添加到系统变量Path

打开cmd输入

  1. arm-none-eabi-gcc -v

image.png

出现以上提示代表安装完成

片上调试器

OpenOCD下载,选择最新版本下载即可

IDE

终于到了主角Clion,关于软件的获取,大学生可以使用学信网的认证申请学生许可,不是大学生可以尝试30天试用,淘宝有奇技淫巧,其它的就看大家各显神通了。
官网下载

Clion配置

  1. 首先随便创建一个项目进入
  2. 点击 文件->设置
  3. 点击 插件,安装Chinese (Simplified) Language Pack / 中文语言包
    image.png
  4. 点击构建、执行、部署->工具链
    image.png
    1. 点+创建新工具链
    2. 命名为MinGW-STM32
    3. 工具集定位到mingw文件夹
    4. C编译器、C++编译器以及调试器定位到前面安装的交叉编译工具链gcc-arm-none-eabi的bin文件夹里面找到对应的exe文件
    5. 其它保持默认,Clion会自动匹配(若CMake没找到,可能需要自己定位)
  5. 点击CMake,检查工具链和生成器是否是刚刚设置的,若不是则修改
    image.png
  6. 点击嵌入式开发,按照下图定位openocd和stm32cubemx
    image.png

到这里Clion配置完成

Clion创建STM32工程

有两种方法,可以在新建工程时选择嵌入式->STM32CubeMX,也可以从STM32CubeMX中创建,这里我们选择后者

  1. 打开STM32CubeMX,创建工程,这个相信大家都比较熟悉
  2. 重点:Project Manager -> Project -> Toolchain / IDE 要选择STM32CubeIDE
  3. Generate Code
  4. 打开Clion 点击打开 选择刚刚创建的工程 确定
    image.png
  5. 进入工程后,创建一个config文件夹,里面创建一个文件config.cfg,这个是OpenOCD的配置文件
    image.png
  6. 里面输入
    如果你选择stlink,输入

    1. # 选择下载器
    2. source [find interface/stlink.cfg]
    3. transport select hla_swd
    4. # 选择板子
    5. source [find target/stm32f1x.cfg]
    6. adapter speed 10000


    如果你选择daplink,输入

  7. 点击右上角 编辑配置
    image.png

  8. 选择配置文件
    image.png
  9. 定位到工程,选中刚刚创建的cfg文件
    image.png
  10. 现在应该可以正常进行编译、烧录、debug了
    image.png
  11. 如果编译的按钮不亮,打开打开.ioc文件重新Generate一下再试试
  12. 如果还是不行,那就 遇到任何CMake相关的报错,一般是由于缓存没有更新引起的,可以在CLion中选Tools-CMake-Reset Cache and Reload Project即可解决。

正常编译效果

image.png

正常烧录效果

image.png

正常Debug效果,比如在main函数设置断点

image.png