——STM32 HAL库开发系列<0>
本文介绍一种使用STM32官方推出的芯片基础代码配置工具STM32CubeMX与JetBrains开发的CLion联合搭建的开发环境。本开发环境可以应用于Windows平台和MacOS平台,Linux平台笔者并未测试,理论上是可以按照相同的方法进行搭建的。本次使用到的开发软件与硬件如下:
- 开发环境的核心IDE: JetBrains旗下的C/C++集成开发环境CLion
- ARM编译工具链: arm-none-eabi-gcc 与 arm-none-eabi-g++
- 开源调试工具(搭配ST-Link使用): OpenOCD
- ST官方芯片基础代码配置工具:STM32-CubeMX
- 搭载STM32芯片,拥有Serial Wire Debug调试接口的开发板
- 适配开发环境的C/C++编译器与CMake工具
本页内容概览
1.详解开发环境调用与开发流程
本文描述的工具链和开发环境作用方式如上图所示,STM32嵌入式开发有三个核心目标或者说功能,首先是便利的编辑需要烧录到STM32芯片中FLASH的代码;其次是便利的编译并且将代码下载到STM32芯片中运行功能;最后是通过GDB调试工具配合STM32的SWD调试接口实现代码调试与FLASH查看功能。
首先使用STM32CubeMX工具生成外围以及底层代码。做过嵌入式开发的同学们都知道,即使是完成一个非常简单的Blink闪灯程序,也需要对于芯片的时钟、中断等功能进行大量的配置,在传统的Keil开发或者是IAR开发流程中,很多工程的这一部分代码(包括startup.s等内容)通常都是“祖传代码”,对于开发者来说是一个黑箱,开发者既不能了解其中的细节以及作用方式也不能轻易改动这部分代码,令人十分恼火。STM32CubeMX可以帮助开发者完成这一过程,通过可视化的编辑方式自动生成相关代码。
基础代码生成后,就可以使用CLion进行便利的代码编写,例如本开发环境能够使用CLion的项目管理与代码补全等等功能。代码编写完成后通过操作系统中安装的C/C++基础库以及Cmake工具完成代码的初步编译,这个环境在Windows系统中是MinGW,而在MacOS系统中是包含在Xcode环境中的开发工具。最后使用ARM工具链,也就是arm-none-eabi-gcc/g++工具完成编译,编译后的bin、hex、elf文件可以通过调试接口烧录到STM32的MCU芯片中。
在调试和烧录过程中,本文调用的是4线(含有电源)的Serial Wire Debug,简称SWD,调试接口,通过OpenOCD配合ST-Link硬件可以将目标代码烧录到芯片中。配合绑定在操作系统中的C/C++环境的GDB,也就是选项中的Bundled GDB可以实现对于STM32的调试功能,并且能够查看FLASH。
2.STM32CubeMX下载与安装
STM32CubeMX是意法半导体STMicroelectronics官方推出的基于STM32HAL库的代码生成与芯片功能配置工具,其优势在于使用了HAL库,也就是硬件抽象层Hadware Abstract Layer,并且能通过可视化图形化的方式进行简单零基础的配置。ST官方下载地址链接 打开页面后下拉至“获取软件”根据自己的操作系统下载相应的软件,个人推荐选择Get Latest,如果Latest的版本使用的JRE版本高于或者大大低于CLion内嵌的JRE版本有可能启动不成功,此时如果不能通过更新CLion解决问题,则试着使用其他版本的CubeMX。
3.ARM工具链与OpenOCD的下载与安装
完成STM32CubeMX的安装后来到了OpenOCD与ARM Tool Chain的安装和配置部分,这两个工具的官方下载链接如下所示,二者都以压缩包的方式下载,当然ARM Tool Chain工具可以以可执行文件的方式下载并且具有和大多数安装程序相似的安装流程,下载OpenOCD后将文件解压并存放到任意目录下即可,但是需要注意的是,OpenOCD的存储绝对路径中严禁出现任何空格和中文,否则将导致OpenOCD无法使用调试相关的功能,原因是GDB无法识别含有空格与中文(可能)的OpenOCD存储目录。
4.1 C/C++编译环境在Mac系统中的安装
众所周知,MacOS在嵌入式领域一向被认为是无法完成大部分开发任务的,但是随着近年来许许多多嵌入式开发平台对于MacOS系统的支持,例如CLion专门推出了基于STM32CubeMx的工程组织方式,对于Arduino平台上线了插件,支持PlatformIO等嵌入式平台插件。MacOS系统不经过处理直接安装CLion是无法对c源码和cpp源码直接进行编译的,由于MacOS的种种限制,需要单独安装编译器。由于MacOS系统与Linux较为相近并且没有apt,yum等等包管理器,所以需要首先安装一个包管理器Homebrew。安装命令与下载安装期间执行命令如下,命令需要在Mac自带的Terminal终端内执行:
#默认的安装语句,由于HomeBrew服务器位于大洋彼岸,所以安装速度非常感人,可以使用以下的“中国改进版
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
#中国大陆境内完整版下载,需要几分钟至十几分钟(网络条件较好状况下)
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
#中国大陆境内精简版下载,需要几十秒至几分钟(网络条件较好状况下)
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" speed
#常见错误见如下网址: https://gitee.com/cunkai/HomebrewCN/blob/master/error.md
当HomeBrew安装完成后,需要安装C语言编译器gcc与C++编译器g++,以及工程编译软件CMake以及make,相关扩展内容可以在其他的博客内容内寻找,对应命令如下所示,使用gcc,g++,cmake等命令不出现报错“zsh: command not found“即可:
#首先对homebrew包管理器的仓库进行更新和对已经安装的包进行更新
brew update && brew upgrade
#完成更新后,分别安装上文中提到过的四个工具,可以通过whereis命令查看安装位置
brew install gcc g++ make cmake
#如果不想折腾以上的内容可以直接通过安装X-Code相关内容
#Xcode体积非常大,可以选择安装也可以不安装,但是直接安装Xcode可以解决很多莫名其妙的问题
#执行xcode环境安装(必须)
xcode-select --install
4.2 C/C++编译环境在Windows系统中的安装
许许多多开发人员在学习C语言或者C++开发时选择的开发环境都是Windows + DevC++这款经典的开发环境搭配,众所周知,DevC++是自带MinGW开发环境的,但是使用DevC++自带的MinGW可能会发生许许多多的奇怪问题,所以还是选择单独安装MinGW环境。首先从如下地址下载安装包:MinGW下载 随后运行下载后的程序,注意后续要安装32-bit的MinGW安装包。下载后运行exe进入Installer选择标记为Basic Setup的包,选择后点击安装,将进入较为漫长的下载安装流程。 安装完成后,将MinGW相关的程序存放位置加载到系统变量中,这一步的作用是在打开CMD命令行窗口执行命令时能够直接索引到可执行程序的位置,无需切换目录,这对于开发环境的自动化流程是必不可少的,右键此电脑>>属性>>高级系统设置>>环境变量>>PATH 在PATH条目(系统总体的PATH和当前用户的PATH都可以)中添加MinGW文件夹下的bin文件夹,例如笔者的目录即为 C:\MinGW\bin 注意!!在设置环境变量后需要依次点击“确认”保存改变后退出,安装成功的验证方法为,按下WIN+R组合安按键输入“cmd”回车运行,弹出命令行窗口后,执行“gcc -v”命令,如果有输出显示即成功,如下截图:
由于在众多的安装和配置过程中,MinGW安装环境过程中的下载和安装等待流程的时间长度实在令人崩溃以至于很多人在这个步骤被劝退,究其原理是时尚就是下载并且建立目录关系,所以完全可以将已经安装好的MinGW文件夹进行打包后下载到本地进行解压。在此提供相关文件的下载链接,因为此安装过程较为艰难,可以查阅参考文档。
5. 获取和安装CLion IDE并且完成基础配置
CLion是JetBrians推出的一款C/C++开发IDE,谈起JetBrains,笔者认为该团队开发的IDE和各类工具是最”令人舒适且兼容性和功能性均有“的开发工具。笔者因为对于JetBrains团队产品的喜爱和支持正版的理念,花费$649/年订阅了全家桶,要知道大名鼎鼎的IntelliJ IDEA这段传奇的IDE的售价已经需要每年$499了(当然PyCharm和CLion等仅需$199一年)所以说这价格还是很公正并且诱人的。当然这个价格是针对于企业使用的,如果是个人订阅的Individual版本License,全家桶仅需$249,可以说非常划算了。当然如果使用者是高校师生(在学信网可验证是必要条件)或者开源项目开发者(事实上这个手段是非教育License条件下唯一的Free License获取方式)经过审核可以免费使用。在官网购物页面可以获取相关免费或者折扣信息,获取到安装包后安装即可。
如果您并非没有经济能力支付或者仅作个人学习使用,请遵守自己的道德底线为值得付费的优质软件果断付费,请记住支持正版和保护开源是一个开发者最后的道德底线!!!
- 安装CLion完成后,需要安装两个必要的插件(Plugins)以获得更加良好的体验和必要的功能
- 安装插件:Chinese(Simpified) Language Pack/中文语言包 用于汉化IDE
- 安装插件:Serial Port Monitor 此插件是一个串口调试器,便于在开发过程中的通信和Debug