STM32 JTAG引脚复用设置

前奏

先来copy下 JTAG、SW接口的定义,

JTAG:JTAG(Joint Test Action Group;联合测试工作组)是一种国际标准测试协议,主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。

SWD:SW(Serial Wire Mode Interface),串行接口线模式。在串行线模式,只有针TCLK和TMS使用。TDO数据输出引脚是一个可选。

SWD下载调试 原理图:

从图中看到:板子使用SWD接口下载调试,即使用SWDIO、SWCLK(PA13、PA14);PB3–JTDO 默认功能为JTAG的,而这里用作其他的功能–普通I/O。

激情

问题来了:

1、需要关掉PB3的JTAG功能,复用为其他功能。

2、SWD 和传统的调试方式区别。

stm32 JTAG复用相关方法 :

直接上代码,如下:

  ........
  RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
  //改变指定管脚的映射  GPIO_Remap_SWJ_JTAGDisable  JTAG-DP 失能 + SW-DP使能
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
  .......

但,

当设置了以上语句后,当运行了这两个语句后,JTAG仿真就与目标失去去联系。

解决办法有:

1、设置启动模式为ISP模式(BOOT0=1、BOOT1=0)或设置启动模式为RAM运行模式(BOOT0=1、BOOT1=1)。 将开发板断电后重新上电,此时就因不是在用户程序模式,因此就不会执行禁用JTAG的语句,JTAG功能也就可以正常使用。

2、设置启动模式为ISP模式(BOOT0=1、BOOT1=0),用ISP程序将STM32的FLASH擦除,之后就可恢复JTAG功能。

3、如果你的仿真器支持SWD仿真模式,如IAR下用JLINK、MDK下用ULINK2。 直接将仿真器的模式设为SWD模,就可以不受这个禁止JTAG功能的影响了。

我的环境切合第三个解决方案,IAR设置如下:

SWD 和传统的调试方式区别 :

  1. SWD 模式比 JTAG 在高速模式下面更加可靠。 在大数据量的情况下面 JTAG 下载程序会失败, 但是 SWD 发生的几率会小很多。基本使用 JTAG 仿真模式的情况下是可以直接使用 SWD 模式的, 只要你的仿真器支持。 所以推荐大家使用这个模式。
  2. 在大家 GPIO 刚好缺一个的时候, 可以使用 SWD 仿真, 这种模式支持更少的引脚。
  3. 在大家板子的体积有限的时候推荐使用 SWD 模式, 它需要的引脚少, 当然需要的 PCB 空间就小啦! 比如你可以选择一个很小的 2.54 间距的 5 芯端子做仿真接口。

然后

以上,

散啦。。。。。。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 22:14:46

STM32 JTAG引脚复用设置的相关文章

STM32 JTDO JREST复用为普通IO

一.开启AFIO的时钟(必须保证先打开AFIO,否则无效) RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 二.禁用JTAG,使能SWD GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);//释放JTAG引脚 三.打开GPIO的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE): 即可. JTDO.JTDI.JTRS

STM32的PWM输入模式设置并用DMA接收数据

STM32的PWM输入模式设置并用DMA接收数据 项目中需要进行红外学习,如果采用输入捕获的方式,因为定时器只能捕获上升沿或者下降沿, 所以只能获得周期,而不能得到具体的红外波的高低电平的时间. 所以采用PWM输入的方式进行捕获. 采用的是PA8脚,对应TIM1的通道1. /********************************************************************* * 函数 *************************************

stm32 之引脚和各功能模块间关系

在调试中断问题时发现一个问题,在不同中断号下,我想修改中断处理函数的入口,即串口一的中断处理函数我想改为用串口二的中断处理函数是否有问题.答案是肯定有问题,但是为何有问题,是啥会导致这样的问题产生?下面从就来探讨下这个问题: 1.我用哪个串口是根据啥来判断的,肯定是硬件的管教啊,即我用的是串口一,我就要对我用到的硬件进行设置,即对我的RX和TX用到的引脚进行设置. //RX引脚设置 GPIO_PinAFConfig(DEBUG_USART_RX_GPIO_PORT,DEBUG_USART_RX_

STM32通用定时器库函数设置

通用定时器 STM32的通用定时器为:TIM2.TIM3.TIM4和TIM5 在使用通用定时器时利用库函数直接设置定时器如下: 1.使能定时器TIM_X的时钟:(X=2.3.4.5) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIMX,ENABLE); 2.计算要定时的时间,根据定时时间来设定分频数和最大计数值(以向上计数为例子),其中计算关系如下: 系统时钟(一般为72MHZ) = 定时器分频数 * 计数值 假如分频数为7200,则定时器时钟为:72MHZ/7

关于引脚复用,不得不提的GPIO_Pin_sources 和GPIO_Pin

今天在端口复用时遇到了困惑,参考:http://www.51hei.com/bbs/dpj-40992-1.html 调整前的代码GPIO_PinAFConfig(GPIOA,GPIO_Pin_9,GPIO_AF_4);GPIO_PinAFConfig(GPIOA,GPIO_Pin_10,GPIO_AF_4); 调整后的代码GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_4);GPIO_PinAFConfig(GPIOA,GPIO_PinSource

IO引脚复用和映射

1.端口复用 这些外设包括ADC,DAC以及串口等等. 查找STM32F429数据手册可以找到相关IO口的复用功能引脚. 注意:除ADC和DAC要配置成模拟通道外,其他的所有外设都要配置成复用功能.

JTAG 引脚自动识别 JTAG Finder, JTAG Pinout Tool, JTAG Pin Finder, JTAG pinout detector, JTAGULATOR, Easy-JTAG, JTAG Enumeration

JTAG Finder Figuring out the JTAG Pinouts on a Device is usually the most time-consuming and frustrating process and Finding the pinouts for these ports allows you to access with correct JTAG Devices likeGPG ORT, and JTAG Finder helps you to get star

STM32 Jtag被锁,无法下载问题

今天不小心掉用了#define GPIO_Remap_SWJ_Disable      ((uint32_t)0x00300400)  /*!< Full SWJ Disabled (JTAG-DP + SW-DP) */ 这个函数导致无法用Jlink下载程序 解决办法: 将stm32的REST脚一直接地,即复位,用keil下载,运行到 JLink info:------------DLL: V4.46f, compiled May 10 2012 08:30:05Firmware: J-Lin

单片机引脚复用使用不当会导致bug

单片机的pin复用功能是很厉害的,比如powerpc系列的mpc5602D这一款芯片.如果通过SIUL没有配置正确.比如一个单片机的某个特定的pin有emios(PWM)的输出功能,同时该pin也可以有adc的功能(下文只讨论该pin).那么的确在有些情况下会存在adc捕获到emios的输出情况.同时adc本来是输入的.结果由于配置的问题,对外围电路也产生了干扰.这种bug一般不容易被用户察觉到.还以为是来自硬件的干扰.实际上是由于对SIUL的配置的bug导致一种看起来奇怪的bug. 此时只需要