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

news2024/12/28 17:36:48

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.coloradmin.cn/o/472540.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Quartus中的逻辑锁定与增量编译

逻辑锁定功能可以将FPGA中的代码模块在固定区域实现,优化时序性能,提升设计可靠性。增量编译功能,可以使设计更快速时序收敛,加快编译速度。 LogicLock 使用Chip Planner创建逻辑锁定区域 打开Chip Planner,点击Vie…

Kubernetes Controller原理讲解

Controller原理 在 K8s 中,用户通过声明式 API 定义资源的“预期状态”,Controller 则负责监视资源的实际状态,当资源的实际状态和“预期状态”不一致时,Controller 则对系统进行必要的更改,以确保两者一致&#xff0…

人群计数数据集汇总和详细介绍,全网最全,crowd counting datasets

Crowd Counting数据集汇总 视频监控video surveillance https://github.com/gjy3035/Awesome-Crowd-Counting/blob/master/src/Datasets.md进展 | 密集人群分布检测与计数 :https://www.sohu.com/a/338406719_823210 Free-view 2022_Pedestrian Attribute Recognition htt…

vue+element Ui 树型组件tree懒加载+搜索框远程请求数据为平铺类型

本人之前一直是耕耘后台研发,最近接了个小需求需要接触到vue,记录一下我遇到的一些前端解决时间长的问题 需求: 1:每次动态请求接口获取下一节点数据 2:接口返回的数据是list,不带子节点,用pid来…

Scala中使用Typesafe Config 库

Typesafe Config 库 在 Scala 中加载配置文件有很多种方法,其中一种常用的方法是使用 Typesafe Config 库。该库提供了一种简单易用的方式来读取和解析配置文件。 以下是在启动 main 方法后加载配置文件的示例代码: 引入 Typesafe Config 库 import c…

【MySQL】函数

一、概述 MySQL中提供了大量函数来简化用户对数据库的操作,比如字符串的处理、日期的运算、数值的运算等等。使用函数可以大大提高SELECT语句操作数据库的能力,同时也给数据的转换和处理提供了方便。 (在sql中使用函数)函数只是对…

shadowsocks服务端和客户端搭建

shadowsocks服务端和客户端搭建 一、服务端搭建 买个境外云服务器,搭建shadowsocks服务端。 需要python3环境。 1.下载shadowsocks服务端python包,并启动。下载地址 # 1.下载 [rootiZrj982e4r5hkd053zsnmqZ ~]# wget https://pypi.python.org/packa…

2023隐私计算与人工智能峰会成功举办!数据宝演讲实录(上篇)分享

2023年4月8日,2023隐私计算与人工智能峰会在深圳举办,大会由华东江苏大数据交易中心和热点资讯联合主办,会上,数据宝董事詹臻女士做开幕式致辞。 数据宝与开放群岛(Open Islands)进行战略签约,…

LoRA: 大语言模型个性化的最佳实践

出品人: Towhee 技术团队 大型语言模型(LLM)在今年获得了极大的关注。在以往,预训练微调(finetuning)成为了让模型适配于特定数据的最佳范式。然而随着大型模型的出现,这种完全微调(…

【运动规划算法项目实战】如何实现机器人多目标点导航

文章目录 前言一、 什么是actionlib?二、实现流程三、总结前言 在ROS机器人应用中,实现机器人多目标点导航是非常常见的需求。本文将介绍如何使用ROS和actionlib来实现机器人的多目标点导航,目标点信息将被记录在YAML文件中。 我们可以通过使用MoveBaseAction来实现机器人…

高并发场景下JVM调优实践

一、背景 2021年2月,收到反馈,视频APP某核心接口高峰期响应慢,影响用户体验。 通过监控发现,接口响应慢主要是P99耗时高引起的,怀疑与该服务的GC有关,该服务典型的一个实例GC表现如下图: 可以…

【WinForm】定时器的使用方法除了定时还有延迟执行可用

在使用VS开发工具创建的WinForm项目中,有一个定时器组件,拖出来放上,它只是一个定时处理的作用,不会显示在窗体中。 开发中如果需要定时处理,就使用Timer组件即可, 在它的属性事件一栏里,有一…

offer选择:创业公司 VS 大厂外包

面试拿到两个offer,一个是规模只有几十人的初创小公司,另一个是大厂外包岗位。都是功能测试,两者薪水待遇也差不多,该如何选择?更有利于之后的职业发展...... 这是一个比较典型的问题,对于要转行的同学或者是刚入行没…

【Call for papers】2023年CCF人工智能会议信息汇总(持续更新)

本博文是根据2022年CCF会议推荐的人工智能领域相关会议目录撰写。 注: 由于一些会议的投稿时间还没公开,因此根据往年投稿时间在表格中使用 ~ 符号表示大概的投稿时间(一旦会议日期更新,我们也将同步更新博文。若更新不及时请小伙…

C++常用23种设计模式总结(一)------单例模式

什么是单例模式 单例模式是一种设计模式,它保证一个类只有一个实例,并提供一个全局访问点来访问该实例。这个模式通常用于控制资源的访问,例如数据库连接、线程池等。单例模式通过限制实例化操作并提供访问方法,确保在整个应用程序…

【Unity3D小功能】Unity3D中实现模型的旋转、缩放效果(控制摄像机)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 其实之前已经写了关于如何控制模型的旋转、移动、缩放效果&…

Android开发:使用sqlite数据库实现记单词APP

一、功能与要求 实现功能:设计与开发记单词系统的四个界面,分别是用户登录、用户注册、单词操作以及忘记密码。 指标要求:通过用户登录、用户注册、单词操作、忘记密码掌握界面设计的基础,其中包括界面布局、常用控件、事件处理等…

NPN三极管放大原理

NPN三极管放大 这是华为的芯片,还有其他人的芯片 无论这些芯片再复杂,它们都是由这种材料制成的 ​ 硅晶体 我们把他放大,单个硅原子最外层带有四个电子, 在纯硅当中,这些电子会两两形成共价键,此时周围形成非常稳定的八电子结构 我们接上电池, 电池无法吸引其中的电子离开,也…

不止大模型,亚马逊云科技布局AIGC底座能力

“大模型只是客户需求的其中一个部分,但远远不是所有,客户还需要更广泛的基础能力。亚马逊云科技推出自研芯片、生成式AI服务Bedrock以及大模型Titan,都在致力于推动AIGC技术的普惠化,够降AIGC的技术门槛和资金门槛,让…

万应低代码4月重点更新内容速递

低代码开发能力提升 分布式缓存支持 万应提供了一套分布式的缓存系统,可在多个节点之间共享缓存数据,从而加速数据获取速度,提高应用的性能和效率。包含: 缓存设置节点:把需要高频访问的数据写入到缓存中,并…