配置STM32L4Discovery eclipse 开发环境

本文内容

本文会详细介绍如何配置一个可以编写,编译和调试STM32L4Discovery开发板上程序的eclipse开发环境。给出一个闪烁LED的样例程序。

我的系统环境

  • windows 10 os
  • Java 8
  • eclipse for c/c++ developers (4.9.0)

准备工作

  1. 安装java并顺势安装eclipse for c/c++, 到STM官网下载并
    安装STM32CubeMX link,(不一定需要)安装STLink link

安装编译器

  1. 进入eclipse,进入主菜单Help->Install New Software
    配置STM32L4Discovery eclipse 开发环境

  2. 在打开的窗口中点击Add, 设置一个自己容易记忆的名字,添加以下链接 http://ac6-tools.com/Eclipse-updates/org.openstm32.system-workbench.update-site-v2
    点击Add
    配置STM32L4Discovery eclipse 开发环境

  3. 选中所有出现的软件选项,点击Next一路继续
    配置STM32L4Discovery eclipse 开发环境

这样eclipse会帮我们安装好ARM的GCC编译器以及一些其他后续开发可能会用到的东西

安装调试工具

STM32discovery开发板的usb接口在电脑上被识别为J-link,所以我们需要安装对应的调试工具(如果你的电脑把它识别成了STlink而不是Jlink,你需要一些额外的步骤来把它转换成J-link,详见文末,这里假设已经成功将开发板识别成了Jlink的情况)

  1. 下载安装对应的Jlink Software and Documentation Pack link
    设置好并记住安装的路径,eclipse后面会用到

  2. 回到eclipse Help->Install New Software, 添加链接(http://gnu-mcu-eclipse.netlify.com/v4-neon-updates)
    选中所有的选型并一路安装,其中包括了J-link Debugging工具,具体步骤参考上面的某条

Hardware Abstraction Layer (HAL)

现在我们已经可以开始对开发板进行编程,编译并下载到开发板上运行了,但是这样要求我们编写繁琐的初始化代码。通过使用官方提供的STM32CubeMx工具,我们可以用图形界面来初始化我们的程序并自动生成对应的代码。

  1. 下载安装STM32CubeMX link
    使用方法见后文

  2. (可选)回到eclipse安装CubMX插件。进入link下载STSW-STM32095。进入eclipse Help->Install New Software,Add,选择Archive然后选到刚刚下载的插件zip文件,一路继续完成安装。最后按提示重启eclipse。重启完成后点击主界面上的STM32CubeMX进入项目管理界面,如果没有找到,在主菜单里进入Window->Open perspective->Other 选中STM32CubeMX将其加入到主界面

注:这个插件可以让我们能在eclipse里使用STM32CubeMX的图形界面来配置我们的初始化代码,如果未来官方不再维护这个插件,可以跳过这一步,直接打开STM32CubeMX的界面来完成后续操作。我个人使用过程中遇到过莫名奇妙的必须要重启eclipse的情况,推荐直接使用STM32CubeMX软件而不是插件

  1. 生成项目文件。无论是STM32CubeMX界面还是eclipse插件界面,找到New Project选项,按照提示选择对应的microchip或者boardr然后start project。

  2. 进入Project Manager,将Toolchain改成SW4STM32。保存工程文件到一个.ioc文件。

点击界面上的Generate Code等待完成,代码会生成在.ioc文件同目录下。

  1. 回到eclipse,进入File->Open Projects from File System,选择刚刚生成代码所在的目录,eclipse会自动识别出其中的工程文件,一路继续将其添加到workspace里。

  2. 打开eclipse里的工程目录,进入主菜单Project,尝试Build Project。如果build失败,说明前面哪个步骤出了问题,请先返回排查,然后再继续下面的步骤。

  3. 实现一个Blink LED功能的程序。回到CubeMX界面,在出现的microchip针脚图上,点击PA13和PA14分别将他们设置成SWDIO和SWCLK,将PB2设置成GPIO_OUTPUT(PB2在板上直接连着一个LED)。
    配置STM32L4Discovery eclipse 开发环境

保存工程文件,重新Generate Code。在生成的Src/main.c文件里添加如下代码

HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_2);
HAL_Delay(1000);

配置STM32L4Discovery eclipse 开发环境

重新Build Project。如果有错误的话请根据提示信息进行排查。

调试设置

  1. 回到eclipse,打开Run->Debug Configurations在GDB SEGGER J-Link Debugging下新建一个Debug config。之前build生成的.elf文件应该会自动出现在application文件选项下,如果不在的话请手动选择。
    配置STM32L4Discovery eclipse 开发环境

填写

${jlink_path}/${jlink_gdbserver}

到Executable Path栏下。如果没有自动找到路径,在Debugger tab里找到之前安装的J-Link的Debugger程序路径(回见第4条)然后填写到J-Link GDB的actual executable设置中。
配置STM32L4Discovery eclipse 开发环境

同理,在下方GDB Client Setup的Executable name栏里填写

${openstm32_compiler_path}\arm-none-eabi-gdb.exe

如果没有自动找到对应的可执行文件,手动到eclipse/plugin目录里找到并填写
配置STM32L4Discovery eclipse 开发环境

在Startup tab里将SWO freq设置成3 MHz,将CPU freq设置成72 MHZ。

在Common tab里将Local file改成Shared file。

所有其他设置保持默认值不变。

保存config,连接的vboard然后点击debug。debug默认会在main函数开头触发一个断点,跳过后即可让程序正常进行,也可以再设置断点进行调试。

如果一切顺利板上连接PB2的LED将会开始按2s的周期闪烁,如果有任何报错请对照之前步骤和报错信息排查。

STLink 转 J-link

如果需要将开发板的STLink转换成Jlink,到之前给的链接里下载Segger ST-link on-board。将开发板用usb连接到电脑上,运行下载的软件然后按照命令行里的提示即可完成转换。成功转换后开发板usb接口附近的一个LED指示灯会被点亮,可以用来确认转换成功与否。

后记

后续开发的话大致流程如下

  1. 根据需要的peripheral协议在STM32CubeMX里配置针脚并生成初始化代码

  2. 在初始化代码预留的框架里填写应用逻辑

  3. 编译成二进制文件然后下载到开发板上进行测试