意法半导体的STM32F103 NUCLEO开发板自带了ST-LINK电路,可以在线调试开发板。该电路与飞思卡尔开发板的OpenSDA电路类似。与飞思卡尔OpenSDA不同的是,ST-LINK仅仅是ST-LINK:它不能在接口上使用 P&E Multilink或者Segger J-Link。幸运的是,ST-LINK预留了一个SWD接口,但不是标准接口。那么,如何使用GNU ARM Eclipse开发环境以及Segger J-Link来调试该开发板呢?
本篇文章主要介绍了如何使用基于Eclipse Mars的发布版和Segger J-LINK调试STM32F103 NUCLEO开发板。使用Segeer J-LINk调试NUCLEO开发板,需要将其连接到开发板的ST-LINK部分的SWD接口。这里描述的步骤适用于其他任何的NUCLEO开发板,因为他们具有相同的SWD接口。 NUCLEO开发板的ST-LINK部分有一个6脚的插头(CN4),可以用来调试NUCLEO开发板上的 STM32F103RB。
CN4接口的引脚定义如下:
Segger J-Link使用标准20针的接口(具体可以看https://www.segger.com/interface-description.html):
根据以下的连接方式将Segger J-LINK与STM32开发板相连: Segger | | | Nucleo | | 1 | VTref | 白色 | 1 | VDD_Target | 4 | GND | 黄色 | 3 | GND | 7 | TMS | 灰色 | 4 | SWDIO | 9 | TCK | 绿色 | 2 | SWCKL | 13 | TDO | 蓝色 | 6 | SWO | 15 | Reset | 桔黄色 | 5 | NRST |
1脚位于右上角。接口的下排与地相连(除了第一个引脚,2脚)。上图的黄色线缆是将地连接到NUCLEO开发板,所以可以使用下排的任何引脚(除了第一个引脚,2脚)。
目前为止一切顺利。我们需要让Segger J-LINK知道CPU已经上电(VDD_Target):J-LINK通过VTref引脚来感知目标设备的电源。NUCLEO开发板的CN4插头的引脚没有供电:开发板上的电阻R9没有焊接。
我想这主要是考虑到想让ST-LINK使用AIN_1信号来控制电源,但并没有相连。最简单的方法是从Ardunio插头的3.3V引脚提供3.3V电源:
创建工程 使用File > New > Project创建一个基于STM32F103的新工程。
可以选择“C++ Project”或者“‘C Project”。
给项目命名,然后选择该器件的工具链(toolchain):
在接下来的对话框可以选择默认值,所以点击Finish并创建工程。 编译工程,并提示没有错误。
调试 打开debug configurations,并新建一个配置信息Segger J-Link。在Device Name使用STM32F103RB。
通过这样,就可以调试了。终于可以使用Segger J-LINK调试NUCLEO开发板了。调试结果如下:
参考链接: STM32 Nucleo 64参考手册: http://www.st.com/web/en/resource/technical/document/user_manual/DM00105823.pdf STM32F103RB原理图 http://www.st.com/st-web-ui/static/active/en/resource/technical/layouts_and_diagrams/schematic_pack/nucleo_64pins_sch.zip |