STM32调试DEBUG时需要了解那些知识相关资料概述

发布者:老桃子最新更新时间:2023-08-22 来源: elecfans关键字:STM32  调试  DEBUG 手机看文章 扫描二维码
随时随地手机看文章

学习STM32开发,肯定少不了DEBUG调试这一步骤。那么,本文带你了解一下这个调试相关的知识。


本文以STM32F1、Cortex-M3为例,其它系列芯片或内核,原理相同或类似。


1概况

在STM32中,有很多调试组件。使用它们可以执行各种调试功能,包括断点、数据观察点、 闪存地址重载以及各种跟踪。

STM32F1使用Cortex-M3内核,该内核内含硬件调试模块,支持复杂的调试操作。

硬件调试模块允许内核在取指(指令断点)或访问数据(数据断点)时停止。内核停止时,内核的内部状态和系统的外部状态都是可以查询的。完成查询后,内核和外设可以被复原,程序将继续执行。

当STM32F10x微控制器连接到调试器并开始调试时,调试器将使用内核的硬件调试模块进行调试操作。


2

调试框图

STM32F1和Cortex-M3的调试框图:

提示:Cortex-M3内核内含的硬件调试模块是ARM CoreSight开发工具集的子集。

ARM Cortex-M3内核提供集成的片上调试功能。它由以下部分组成:

SWJ-DP:串行/JTAG调试端口

AHP-AP: AHB访问端口

ITM:执行跟踪单元

FPB:闪存指令断点

DWT:数据触发

TPUI:跟踪单元接口(仅较大封装的芯片支持)

ETM:嵌入式跟踪微单元(在较大的封装上才有支持此功能的引脚),专用于STM32F1的调试特性

灵活的调试引脚分配

MCU调试盒(支持低电源模式,控制外设时钟等)


3

调试接口

STM32支持两种调试接口:

串行接口

JTAG调试接口

STM32的5个普通I/O口可用作SWJ-DP(串行/JTAG调试)接口引脚:

4

SWJ调试端口(serial wire and JTAG)

STM32内核集成了串行/JTAG调试接口(SWJ-DP)。这是标准的ARM CoreSight调试接口,包括JTAG-DP接口(5个引脚)和SW-DP接口(2个引脚)。

1.JTAG调试接口(JTAG-DP)为AHP-AP模块提供5针标准JTAG接口。

2. 串行调试接口(SW-DP)为AHP-AP模块提供2针(时钟+数据)接口。

在SWJ-DP接口中, SW-DP接口的2个引脚和JTAG接口的5个引脚中的一些是复用的。

SWJ调试端口:

上面的图显示异步跟踪输出脚(TRACESWO)和TDO是复用的。因此异步跟踪功能只能在SWDP调试接口上实现,不能在JTAG-DP调试接口上实现。

JTAG-DP和SW-DP切换的机制

JTAG调试接口是默认的调试接口。如果调试器想要切换到SW-DP,必须在TMS/TCK上输出一指定的JTAG序列(分别映射到SWDIO和SWCLK),该序列禁止JTAG-DP,并激活SW-DP。该方法可以只通过SWCLK和SWDIO两个引脚来激活SW-DP接口。

指定的序列是:

1. 输出超过50个TCK周期的TMS(SWDIO)= 1信号

2. 输出16个TMS(SWDIO)信号 0111100111100111 (MSB)

3. 输出超过50个TCK周期的TMS(SWDIO)= 1信号


5

JTAG脚上的内部上拉和下拉

保证JTAG的输入引脚不是悬空的非常必要,因为他们直接连接到D触发器控制着调试模式。必须特别注意SWCLK/TCK引脚,因为他们直接连接到一些D触发器的时钟端。

为了避免任何未受控制的I/O电平, STM32在JTAG输入脚上嵌入了内部上拉和下拉。

JINTRST:内部上拉

JTDI:内部上拉

JTMS/SWDIO:内部上拉

TCK/SWCLK:内部下拉

一旦JTAG I/O被用户代码释放, GPIO控制器再次取得控制。这些I/O口的状态将恢复到复位时的状态。

JNTRST:带上拉的输入

JTDI:带上拉的输入

JTMS/SWDIO:带上拉的输入

JICK/SWCLK:带下拉的输入

JTDO:浮动输入

软件可以把这些I/O口作为普通的I/O口使用。


6

利用串行接口并释放不用的调试脚作为普通I/O口

为了利用串行调试接口来释放一些普通I/O口,用户软件必须在复位后设置SWJ_CFG=010,从而释放PA15, PB3和PB4用做普通I/O口。

在调试时,调试器进行以下操作:

在系统复位时,所有SWJ引脚被分配为专用引脚(JTAG-DP + SW-DP)。

在系统复位状态下,调试器发送指定JTAG序列,从JTAG-DP切换到SW-DP。

仍然在系统复位状态下,调试器在复位地址处设置断点

释放复位信号,内核停止在复位地址处。

从这里开始,所有的调试通信将使用SW-DP接口,其他JTAG引脚可以由用户代码改配为普通I/O口。

提示:这个地方就是需要大家配置相关的引脚。


关键字:STM32  调试  DEBUG 引用地址:STM32调试DEBUG时需要了解那些知识相关资料概述

上一篇:如何实现一种基于STM32单片机的电子密码锁设计
下一篇:ch32f103c8t6与stm32f103c8t6的区别

推荐阅读最新更新时间:2024-11-19 20:06

STM32单片机程序编译及下载配置
前言 当拿到STM32单片机开发板的时候,程序的编译和下载将是我们踏入STM32单片机开发的第一步。本章详细介绍程序的编译和下载。包括:Keil5工程编译、Keil5程序下载、DAPLINK U盘拖拽下载以及串口程序下载。本文以RY-STM32开发板为例,布局图如下所示,开发板自带下载器DAPLink,与计算机通过USB线连接即可。其他类型的开发板编译与下载类似,举一反三即可。 2.1 DAPLink下载器识别 将开发板通过USB线与计算机连接,并打开开发板供电开关,计算机将自动识别下载器。如下图所示,分别识别出:USB串行设备(COM3),USB大容量存储设备,WebUSB:CMSIS-DAP以及一个名称为DAPLINK的
[单片机]
<font color='red'>STM32</font>单片机程序编译及下载配置
STM32软件定时器的设计
  定时器分为硬件定时器和软件定时器,几乎所有的微控制器上都配备了数量有限的硬件定时器,即控制器本身有专门实现定时的模块。几乎所有的硬件定时器的工作原理都是一样的:定时器在外部时钟提供的周期脉冲下进行计数工作,当计数到用户指定的次数时,就产生一次中断。这个过程完全由微控制器内部的定时器硬件电路实现,不需要 CPU 干预。   相比之下,软件定时器则需要 CPU 的介入来实现了。实现软件定时器一般有两种方法:一种是纯粹依赖 CPU 指令的堆积来实现;另一种是以硬件定时器产生的时间片为基准单位,CPU 基于这个基准单位进行累积来实现。   显然,硬件定时器的精度取决于驱动的时钟脉冲,一般情况下可以达到很高的精度(纳秒级),而软
[单片机]
利用数字示波器调试嵌入式I2C总线的方法
  I2C总线是PHLIPS公司上世纪80年代推出的一种两线式串行总线,最初为音频、视频设备所开发,如今则多在各种嵌入式系统中用于连接 微控制器 及其外围设备。   I2C总线仅需采用两根通信线(一根为串行数据线“SDA”,一根为串行时钟线“SCL”),而传输速率在高速模式下可达3.4Mbit/s,并且是多主总线。每一个挂接在I2C总线上的I2C器件均可通过唯一的地址进行访问。   在嵌入式系统开发中应用I2C总线可有效缩减元器件面积、改善抗干扰能力及增强设计的兼容性。当然,在享受其设计便利性的同时,信号的复杂性也将提高系统调试的难度。   本文阐述了在实际开发中所遇到的I2C通信问题及使用示波器分析问题和解决问题的方
[嵌入式]
如何用STM32单片机蜂鸣器来演奏音乐
本文用STM32单片机蜂鸣器来演奏音乐,用的开发软件是STM32CubeIDE。 蜂鸣器 有源蜂鸣器 内部有震荡源,只要通电就会有响声,但是声音频率固定。 无源蜂鸣器 内部不含振荡源,蜂鸣器管脚输出一定频率的信号,才能发声。 本实例中用到的是无源蜂鸣器,控制频率高低发出不同声调的声音。 电路原理图 由电路原理图可知,蜂鸣器在PB5管脚,以一定频率翻转PB5管脚的电平,可以使蜂鸣器发声。 STM32工程 打开STM32CubeIDE软件,新建STM32工程。关于STM32CubeIDE软件的使用方法,可以参考此文:STM32中PWM的配置与应用详解。 配置时钟。 项目设置。 设置调试模式。 开启PB5管脚。
[单片机]
如何用<font color='red'>STM32</font>单片机蜂鸣器来演奏音乐
基于STM32微控制器处理先进电机控制方法
   变频器的问世和先进的电机控制方法让三相无刷电机(交流感应电机或永磁同步电机)曾经在调速应用领域取得巨大成功。这些高性能的电机驱动器过去主要用于工厂自动化系统和机器人。十年来,电子元器件的大幅降价使得这些电机驱动器能够进入对成本敏感的市场,例如:家电、空调或个人医疗设备。本文将探讨基于ARM的标准微控制器如何在一个被DSP和FPGA长期垄断的市场上打破复杂的控制模式,我们将以意法半导体的基于Cortex-M3 内核的STM32系列微控制器为例论述这个过程。     首先,我们回顾一下电机控制的基本原理。在电机控制系统内,为什么处理器非常重要?我们为什么需要非常好的计算性能?毕竟,Nicolas Tesla在一个世纪前发明交流电机
[嵌入式]
STM32HAL库定时器中断关闭的方法
本文可以用于解决这个问题:定时器中断上电后莫名其妙开启,或者首先触发一次。 STM32HAL库在定时器初始化并开启以后,也是会默认开启中断。如不需要默认就开启中断可以用一下代码关闭: __HAL_TIM_CLEAR_FLAG(&htim6,TIM_FLAG_UPDATE); 其中htim6是定时器的句柄,按照实际使用的定时器填写; TIM_FLAG_UPDATE是中断的类型,也可以根据实际情况修改
[单片机]
STM32 FSMC的用法--LCD
1. LCD/LCM的基本概念 液晶显示器(Liquid Crystal Display: LCD)的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。 LCM(LCD Module)即LCD显示模组、液晶模块,是指将液晶显示器件,连接件,控制与驱动等外围电路,PCB电路板,背光源,结构件等装配在一起的组件。 在平时的学习开发中,我们一般使用的是LCM,带有驱动IC和LCD屏幕等多个模块。 2. FSMC的基本概念 在STM32上开发LCD显示,可以有两种方式来对LCD进行操作,一种是通过普通的IO口,连接LCM的相应引脚来进行操作,
[单片机]
低成本ARM系列LM3S101微控制器的结构与应用
LM3S101是美国Luminary公司生产的、基于ARMCortex-M内核的32位微控制器芯片,它的销售价格在1美元以下,在构建同等性价格比的应用系统时成本很低。广州周立功单片机发展有限公司推出了以学习和评估该芯片为目的的开发套件EasyArm101。该套件由H-JTAG调试器、开发板、KeilμVision开发工具包、各类驱动程序库、文档以及与实例程序配套的相关元器件等组成。 1 LM3S101芯片的架构与特点 1.1 架 构 图1是LM3S101 芯片电路图和EasyArm101开发套件实物图。 LM3S101采用哈佛架构、Thumb-2指令集。芯片内部集成了8 KB单周期的Flash ROM,2 KB单
[应用]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved