STM32Fxx JTAG/SWD复用功能重映射

发布者:advancement3最新更新时间:2018-06-15 来源: eefocus关键字:STM32Fxx  JTAG  SWD  复用功能  重映射 手机看文章 扫描二维码
随时随地手机看文章

问题描述:

在实验室调车过程中,遇到的一个问题:为了每次下载程序方便,队员们往往会把Jlink插在板子上,可是在调车过程中发现,有时程序会莫名死掉,而同样的程序,把Jlink拔了,却不会出现此问题。且设置PB3,PB4均为输出口,且输出高电平,用万用表测量,PB4为高,PB3不是高电平,在看MDK 中的寄存器值,PB3,PB4都是高啊?寄存器的值怎么和实际的值不一样了?


经过仔细研究找到了症结所在:


查看手册后发现在在复位后JTAG接口的PB3被设置为浮空(如果在该引脚悬空的情况下,读取该端口的电平是不确定的。)了,所以读回来的电平也是不确定的。


STM32 的PA13-PA14-PA15-PB3-PB4-PB5主要是用来JTAG调试用的,于是在默认下是启动后为JTAG模式,项目程序中用到这几个引脚作为了普通I/O口,但却并没有对其进行I/O模式配置初始化。因此对于不需要JTAG,而需要充分利用GPIO口时,就需要将JTAG关闭,设置为GPIO模式。

STM32F103的用法


/*--JTAG-DP禁止,SW-DP允许, PA13, PA14用于调试仿真。PA15, PB3, PB4可用于SPI3--*/
    AFIO->MAPR &= 0x00FFFFFF; //
    AFIO->MAPR |= 0x02000000;


 

//关闭JTAG,保留SWD
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

 

工程代码实例:

 

 

STM32F407的用法

使用STM32F系列,会遇到将JTAG口复用为SPI1或直接用做普通IO。

针对于F1系列,需要先禁止使能 JTAG,然后将其复用为其他口或者普通IO。 
针对F4系列,STM32F4库函数中,已经取消了GPIO_*PinRemapConfig()函数,对于复用功能使用GPIO*_PinAFConfig()函数了! 
但是在GPIO_PinAFConfig()函数已经没有禁止JTAG/SW等选项了,而是复用到AF0~AF15线上,其中AF0是系统功能(也是复位初始功能)。STM32F4复位后JTAG对应的管脚的对应的功能就是AF0,(GPIO_AF_MCO=0) 所以这句可以不用:GPIO_PinAFConfig( ,,GPIO_AF_MCO);

直接配置GPIOx_MODER为输出,或输入模式即可,但是注意:STM32F4复位后JTAG对应的管脚的GPIOx_MODER值是0x02,即 复用功能!所以直接配置GPIOx_MODER为所需的模式就可以了!
其中调试接口就是系统功能,这样需要禁用JTAG功能只需把引脚复用到AF1~AF15中的一个就行了。 

注:
1.直接复用就可使用相应的复用功能,不用想着失能JTAG了。 
2.最好不要 将JTAG复用为普通IO。 
3.PB3 PB4将其作为普通IO输出也可以,不过调试下载需要使用SWD下载调试。 
4.如果将所有的JTAG口作为GPIO使用,将会导致无法找到JTAG和SW设备,板子下不进去程序。

 

拓展:

STM32在程序中禁用JTAG功能后会出现不能进行JTAG仿真的现象。

在程序中,通常禁止JTAG的函数如下所示:

 //改变指定管脚的映射  GPIO_Remap_SWJ_Disable SWJ 完全失能(JTAG+SW-DP)

 GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, 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功能的影响了。

 

参考资料来源:

STM32小问题-复用调试接口JTAG/SWD为普通GPIO

http://blog.csdn.net/wg1194024093/article/details/54849686

STM32常用管脚重定义外设

http://blog.sina.com.cn/s/blog_a07a3f180101e6ow.html

STM32f1 中JTAG引脚作为普通IO口设置方法以及STM32f4中的方法的不同

http://blog.csdn.net/wangyinyun1/article/details/48239725


关键字:STM32Fxx  JTAG  SWD  复用功能  重映射 引用地址:STM32Fxx JTAG/SWD复用功能重映射

上一篇:stm32 定时器重映射
下一篇:STM32-如何使用引脚复用功能输出PWM

推荐阅读最新更新时间:2024-03-16 16:05

STM32F103释放Jtag接口用做普通io
stm32上有两个调试接口,一个是比较通用的Jtag,一个是SWD。SWD占用的IO口更少,因此,我们可以用SWD来调试MCU,这样,除去swd的两条线,Jtag接口的另外三个口则可以用来作普通IO口使用,配置很简单,分享给各位: GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); G
[单片机]
STM32的JTAG接口硬件设计
1.什么是JTAG接口? 从感官上看,JTAG接口就是上图中的蓝色的那个20PIN的牛角座。 2.JTAG接口的作用? 1) 给单片机下载程序。 2) 在线调试单片机,例如单步调试、断电调试、看寄存器值等等。 3.STM32的JTAG接口需要在外部接上拉下拉电阻吗? 答:接和不接都可以。(没有必要讨论哪个对) 4.为什么不接也可以工作? 实践证明:不接可以正常工作。 理论依据:STM32参考手册有说明,请看下图红色圈起来的字: JTAG接口电路: JTAG接口,同样也是SWD接口,JTAG用的是6个引脚,SWD用的是2个引脚。(没有说电源负和正两个引脚) STM32支持JTAG和SWD两种方式,只需要在软件上设置切换即可
[单片机]
STM32的<font color='red'>JTAG</font>接口硬件设计
stm32的两种固件下载模式:JTAGSWD
一、JTAG模式 这种模式一般有10pin的、14pin的和20pin的,尽管引脚数和引脚的排列顺序不同,但是其中有一些引脚是一样的。值得注意的是,不同的IC公司会自己定义自家产品专属的Jtag头,来下载或调试程序。 Test Clock Input (TCK) -----强制要求1:TCK在IEEE1149.1标准里是强制要求的。TCK为TAP的操作提供了一个独立的、基本的时钟信号,TAP的所有操作都是通过这个时钟信号来驱动的。 Test Mode Selection Input (TMS) -----强制要求2:TMS信号在TCK的上升沿有效。TMS在IEEE1149.1标准里是强制要求的。TMS信号用来控制TAP
[单片机]
stm32的两种固件下载模式:<font color='red'>JTAG</font>和<font color='red'>SWD</font>
基于JTAG接口 实现ARM的FPGA在线配置
  引 言   随着通信技术的发展,出现越来越多的无线接人技术,为了解决不同标准间的互通和兼容,人们提出了软件无线电(Software Defined Radio,SDR)技术。SDR技术要求通信终端具有可重配置能力,根据特定通信网络情况,动态地改变调制/解调、编解码、交织/解交织等方案。SDR终端的实现往往都是基于可重配置的硬件环境,如现场可编程逻辑阵列(Field Programmable Gate Array,FPGA)、数字信号处理器(Digital Signal Processor,DSP),而不是专用集成电路(Application Specific Integrated Circuit,ASIC)等特定的硬件电路和芯
[单片机]
基于<font color='red'>JTAG</font>接口 实现ARM的FPGA在线配置
MDK中SWD模式的设置
J-Link 的SWD只需要2+1+1根线(PA13/JTMS/SWDIO、PA14/JTCK/SWCLK)+ VCC+GND,这样就节省了3个I/O(PA15/JTDI、PB3/JTDO、PB4/JNTRST)为其它所用,并且可节省一部分板子的空间。 JTAG转SWD的连接图如下: JTAG-SWD转接板链接 MDK下SWD设置方法: 1)打开工程Options设置 在设置中按照上图设置成 SWD 模式, 速度你可以按照你的实际需求来设置, 如果你的板子供电系统不是特别稳定, 纹波比较大或者仿真线比较长可以设置成 500K 或者 1M.
[单片机]
MDK中<font color='red'>SWD</font>模式的设置
利用具有禁用功能的运算放大器ADA4853-2实现视频切换应用低成本视频多路复用
电路功能与优势 本电路利用双通道高速放大器ADA4853-2实现一种低成本、低功耗视频多路复用器。用户利用该电路可以向三通道视频解码器(例如采用40引脚LFCSP封装的 ADV7180)输入第四个视频源。这样,通过使用较小的低成本解码器,可同时节省成本和宝贵的电路板空间,而且如果类似设计只需要三个视频源,还可以设计重新使用。 传统的CMOS多路复用器和开关在视频频率条件下使用时,存在若干不足之处,其导通电阻会引入失真,降低差分增益和相位性能,并且与端接电阻相互影响,使传入的视频信号衰减,影响亮度。系统设计人员一般通过增加外部缓冲来提高增益和驱动能力,从而解决这些问题。 使用具有禁用/使能功能(有时称为关断)的高速视频放大器可
[模拟电子]
利用具有禁用<font color='red'>功能</font>的运算放大器ADA4853-2实现视频切换应用低成本视频多路<font color='red'>复用</font>器
STM32 SWD下载出现no target connect解决方法
一、问题再现 二、问题原因 程序中把 swd 下载那两个下载引脚给复用了,然后st-link 就无法通过下载引脚,连接你的单片机了,所以就显示无法检测到目标。 三、解决方法 第一种: STEP1: BOOT0引脚拉高使用ISP下载模式. STEP2: 用STM32 ST-LINK Utility连接芯片,然后Target- Erase Chip。 STEP3: 再次进入keil界面,拉低BOOT0,点击LOAD即可下载! 第二种: 可以按住复位按键,单击下载 然后立即松开复位 就可以下载程序。 这是单片机启动过程 单片机上电复位后执行的是内部的启动程序 还没有执行你 自己的程序 所以
[单片机]
STM32 <font color='red'>SWD</font>下载出现no target connect解决方法
嵌入式系统中的JTAG接口编程技术
    摘要: 分析发嵌入式系统开发中常用的三种芯片编程方法,介绍了JTAG接口的标准,工作原理及在芯片中的实现,根据JTAG接口所提供的边界扫描功能 ,通过PC机并行接口模拟JTAG接口的时序,实现了使用目标系统中微处理器的JTAG接口对系统程序存储器FLASH的编程。     关键词: 嵌入式系统JTAG(Joint test action Group)联合测试行为组织 编程器StrongARM手持设备 随着手持式电子设备的迅猛发展,手机,PDA、掌上电脑,电子书和数码相机等正在快步走进人们的日常生活,这一类电子产品同属于嵌入式系统的范畴,都是以高性能的微机处理器为核心扩展相应的应用程序,实现电
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved