软件开发环境搭建
主流的stm32开发环境是MDK-ARM,也就是Keil,近几年ST官方主推使用STM32CubeIDE,但是在尝试过以上两种开发环境后,还是感觉界面过于原始,用起来不顺手,所以这个项目采用Clion作为IDE
硬件准备
材料:
- 一块stm32开发板,使用SWD接口(见图中右下角)
- 一个烧录器,可以是ST-Link,也可以是DAPLINK
区别是STLink只支持ST公司的单片机,而DAPLINK是开源的,支持大多数ARM内核的单片机,挑一个顺手的即可
为了节约成本,我这里使用了一块合宙的F103CBT6核心板,出厂烧录DAPLINK固件,可以当烧录器用
- 母对母杜邦线4根
操作:
- 根据开发板上丝印的提示,使用母对母杜邦线连接开发板和烧录器
- 3 <—-> 3v3
- G <—-> GND
- D <—-> SWDIO
- C <—-> SWCLK
- 将烧录器插上电脑(注意连接前一定要仔细检查电源线,不能接反,否则可能烧坏芯片,更严重可能烧坏电脑的USB口)
环境搭建
操作系统
Windows 10 (理论上本套方案使用Linux也可以,感兴趣的网上有很多教程)
初始化代码生成器
STM32CubeMX
官网下载最新版本即可
- 点击
获取软件
- 点击
Get Lastest
- 有ST账号的直接登录,没有的填写信息就可以下载
- 安装
编译器
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下载
- 打开exe文件
- 点击
Install
- (可选)修改安装目录,比如在C盘建一个tools文件夹,最终路径为
C:\tools\MinGW
,注意:路径中不能出现空格,否则后续会出现无法Debug的问题 - 点击
Continue
全部选项点击-> Mark for installation- 点击左上角的Installation -> Apply changes -> Apply
完成后如图所示
如果一直安装不上,可以参考这个里面的第二个方法,在终端直接安装http://t.csdn.cn/iivL4
将bin文件夹加入到系统变量中的Path- 打开cmd,输入
gcc -v
若显示以上内容,代表安装成功
如果安装不能成功,可以参考其他教程
工程构建工具
CMake下载
选择Windows x64 Installer,按默认安装即可
交叉编译工具链
在x86架构(即PC)编译的程序不能在ARM架构的stm32上运行,必须使用ARM的交叉编译工具链
选择windows压缩包格式
可以解压到前面创建的tools文件夹中,并将bin文件夹添加到系统变量Path
打开cmd输入
arm-none-eabi-gcc -v
片上调试器
OpenOCD下载,选择最新版本下载即可
IDE
终于到了主角Clion,关于软件的获取,大学生可以使用学信网的认证申请学生许可,不是大学生可以尝试30天试用,淘宝有奇技淫巧,其它的就看大家各显神通了。
官网下载
Clion配置
- 首先随便创建一个项目进入
- 点击 文件->设置
- 点击 插件,安装Chinese (Simplified) Language Pack / 中文语言包
- 点击构建、执行、部署->工具链
- 点+创建新工具链
- 命名为MinGW-STM32
- 工具集定位到mingw文件夹
- C编译器、C++编译器以及调试器定位到前面安装的交叉编译工具链gcc-arm-none-eabi的bin文件夹里面找到对应的exe文件
- 其它保持默认,Clion会自动匹配(若CMake没找到,可能需要自己定位)
- 点击CMake,检查工具链和生成器是否是刚刚设置的,若不是则修改
- 点击嵌入式开发,按照下图定位openocd和stm32cubemx
到这里Clion配置完成
Clion创建STM32工程
有两种方法,可以在新建工程时选择嵌入式->STM32CubeMX,也可以从STM32CubeMX中创建,这里我们选择后者
- 打开STM32CubeMX,创建工程,这个相信大家都比较熟悉
- 重点:Project Manager -> Project -> Toolchain / IDE 要选择STM32CubeIDE
- Generate Code
- 打开Clion 点击打开 选择刚刚创建的工程 确定
- 进入工程后,创建一个config文件夹,里面创建一个文件config.cfg,这个是OpenOCD的配置文件
里面输入
如果你选择stlink,输入# 选择下载器
source [find interface/stlink.cfg]
transport select hla_swd
# 选择板子
source [find target/stm32f1x.cfg]
adapter speed 10000
如果你选择daplink,输入点击右上角 编辑配置
- 选择配置文件
- 定位到工程,选中刚刚创建的cfg文件
- 现在应该可以正常进行编译、烧录、debug了
- 如果编译的按钮不亮,打开打开.ioc文件重新Generate一下再试试
- 如果还是不行,那就 遇到任何CMake相关的报错,一般是由于缓存没有更新引起的,可以在CLion中选Tools-CMake-Reset Cache and Reload Project即可解决。
正常编译效果
正常烧录效果
正常Debug效果,比如在main函数设置断点