当前位置: 首页 > article >正文

【keil5开发ARM工程时使用STLink调试的技巧分享】

ARM工程开发小技巧系列文章

St link V2驱动安装方法


`

文章目录

  • ARM工程开发小技巧系列文章
  • 前言
  • 一、准备工作
    • 1. 硬件连接
    • 2. 安装stlink的驱动
    • 3. Keil 5配置
  • 二、调试示例
    • 1.进入调试状态
    • 2. 调试演示
      • 2.1 复位,使程序复位到初始位置
      • 2.2 单步调试
      • 2.3 逐步调试
      • 2.4 跳出调试
      • 2.5 运行到光标处
      • 2.6 跳转到当前运行到的暂停行
      • 2.7 调试窗口
      • 2.8 内存窗口or变量窗口
      • 2.9 系统外设窗口
    • 即外设寄存器数值查看窗口![在这里插入图片描述](https://img-blog.csdnimg.cn/b7e9fcbb3a4e44899de3afbccfd4545f.png)
  • 三、总结


前言

介绍如何在Keil 5中使用st-link v2为arm开发板下载程序、调试程序。包括stlink的接线方法、keil中stlink的配置、keil中debug等内容。

一、准备工作

1. 硬件连接

JTAG与SWD比较

JTAGSWD
优点a). 不限于ARM内核单片机,能支持更多单片机程序调试和下载。
b). 用途更广,用于编程,调试和生产测试.
a).引脚数更少,有利于节约电路板尺寸。
b). SWD具有特殊功能,例如通过其I / O线打印调试信息。
c). 在高速大数据情况下,SWD整体性能比JTAG更好。
缺点占用引脚数比较多,比较占用板子尺寸。只能用于ARM内核的单片机。

虽然看上去pin脚一样,但是swd在多数情况下只需要使用SWDIO、SWCLK、VCC、GND四个引脚即可。
Jtag和SWD的pin脚比较
常用的SWD设备
在这里插入图片描述
ST-Link V2
STLINK与STM32的引脚的对应连接关系

St-Link连接方法

2. 安装stlink的驱动

最新的驱动下载地址:
STSW-LINK009 - ST-LINK, ST-LINK/V2, ST-LINK/V2-1, STLINK-V3 USB driver signed for Windows7, Windows8, Windows10 - STMicroelectronics

3. Keil 5配置

通过魔术棒打开配置对话框
在这里插入图片描述
自动检测到的:
在这里插入图片描述
勾选“Reset and Run”,程序下载到单片机后会自动复位并运行程序。
在这里插入图片描述

二、调试示例

1.进入调试状态

单击下图红框中的图标,可以进入或退出调试模式:
在这里插入图片描述
进入调试模式后,会多一个调试的快捷工具栏,如下:
在这里插入图片描述

2. 调试演示

2.1 复位,使程序复位到初始位置

在这里插入图片描述

2.2 单步调试

【单步调试】也就是每点一次按钮,程序运行一步。遇到函数会进入函数。点击图标按钮,或者按快捷键F11。
在这里插入图片描述

2.3 逐步调试

【逐步调试】即逐行调试,也就是每点一次按钮,程序运行一行。遇到函数不会进入函数。点击图标按钮,或者按快捷键F10。
在这里插入图片描述

2.4 跳出调试

【跳出调试】即挑出函数调试,也就是每点一次按钮,程序跳出一个函数,直到跳出最外面的函数(main函数)。点击图标按钮,或者按快捷键Ctrl + F11。
在这里插入图片描述

2.5 运行到光标处

【运行到光标处】即将光标放在某一处,点击该按钮(或Ctrl + F11),程序执行到光标的位置就会停止下来(前提是程序能执行到光标的位置)
在这里插入图片描述

2.6 跳转到当前运行到的暂停行

这个功能在程序停止运行时有效,主要的作用就是我们打开了很多文件,不知道将程序翻到哪里去了,点击改按钮即可知道我们的程序暂停在那个位置。
在这里插入图片描述

2.7 调试窗口

【调试窗口】是在调试的时候可以查看的窗口,这里有别于平时编辑状态下的窗口。平时编辑时View菜单下面的选项很小,但是进入调试模式,这里就多了很多选项,这些选项就是调试时查看的窗口(见下图)
在这里插入图片描述

2.8 内存窗口or变量窗口

选中一个变量,鼠标右键即可选在“Add ‘变量名’ to…”添加到指定的观察窗口
在这里插入图片描述

2.9 系统外设窗口

即外设寄存器数值查看窗口在这里插入图片描述

三、总结

在ARM软件工程中如果出现意想不到的错误,通过调试模式去定位错误是比较靠谱的方法。


http://www.kler.cn/a/15174.html

相关文章:

  • 如何将几个音频合成一个音频?非常简单的几种合成方法
  • LLM评测指标与评测方法
  • webpack配置
  • 软件测试基础三十 (Python + Flask实现Mock平台搭建)
  • Acme PHP - Let‘s Encrypt
  • Go语言基本类型转换
  • 数据结构之KMP算法:彻底搞懂kmp算法
  • Ajax XHR请求
  • c++元编程
  • Maven 如何下载依赖包的源码包
  • 2023年第二十届五一数学建模竞赛题目 C题详细思路
  • [最小距离的最大值] 跳石头
  • node(express框架)连接mysql 基础篇
  • 数据结构——求二叉树的属性
  • 制造策略 ETO、MTO、ATO、MTS
  • 09 【Sass语法介绍-函数指令】
  • 原理这就是索引下推呀
  • ChatGPT能让智能客服更上一层楼么?
  • Mac 地址与 IP 地址有什么区别?
  • RocketMQ第二节(安装和模块详解)
  • TCP分岔:优化云服务的性能
  • 入局生成式AI,看好亚马逊(AMZN)中期表现
  • Superset整合keycloak系统
  • linux平台移植qt
  • 浅谈欧拉定理及其扩展
  • 重写Qt中的Widget移动事件