问题描述:

在实验室调车过程中,遇到的一个问题:为了每次下载程序方便,队员们往往会把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

STM32常用管脚重定义外设

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

本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

stm32f4有重映射么_STM32Fxx JTAG/SWD复用功能重映射相关推荐

  1. 【STM32】谈谈STM32F10XX的定时器通道复用功能重映射

    写这篇的动机是我每次配置定时器硬件PWM的时候都要翻一遍手册,对着目录找内容实在麻烦,干脆写一篇博文直接pick出这一段. 本文参考:正点原子提供的STM32中文参考手册 关键词:STM32 定时器 ...

  2. STM32---I/O引脚复用以及重映射(GPIO和AFIO)

    STM32F4xx官方资料: <STM32F4中文参考手册V10>-第7章I/O 引脚复用器和映射(GPIO和AFIO) I/O 引脚复用器和映射 微控制器 I/O 引脚通过一个复用器连接 ...

  3. 12_JLink在线调试_软件调试方法和端口复用和重映射

    JTAG/SWD调试原理简析 STM32F10xxx使用Cortex-M3内核,该内核内含硬件调试模块,支持复杂的调试操作.硬件调试模块允许内核在取指(指令断点)或访问数据(数据断点)时停止.内核停止 ...

  4. 【STM32】端口复用和重映射,完全重映射,部分重映射

    文章目录 端口复用 端口复用函数总结 端口重映射 完全重映射 完全重映射函数总结 部分重映射 端口复用 当 PA9,PA10 引脚作为串口 1 的 TX,RX 引脚使用的时候,那就是端口复用(相较于作 ...

  5. STM32 端口复用与重映射及低功耗引脚配置

    STM32 端口复用与重映射及低功耗引脚配置 什么是复用? 在TSM32里面,大部分的引脚都是有GPIO复用功能,也就是说,一个 GPIO如果可以复用为内置外设的功能引脚,那么当这个 GPIO 作为内 ...

  6. 端口复用和重映射--STM32F103

    什么是端口复用? STM32中有很多内置外设,这些外设的引脚都是与GPIO复用的,什么时候复用呢?就是当一个GPIO作为内置外设引脚使用时,就叫做复用.比如串口1的发送接收引脚是PA9,PA10,当P ...

  7. STM32之端口复用与重映射

    STM32 --端口复用和重映射 首先来说下什么是端口复用. STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的.也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GP ...

  8. stm32---端口复用和重映射

    什么是端口复用? STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的.也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用. 简 ...

  9. 端口复用|端口重映射

    端口复用:STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的.也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用. 例如:串口 ...

最新文章

  1. json及JavaBean转json
  2. 软件工程---08.软件测试
  3. 服务器启动将字典加载到内存中@PostConstruct
  4. linux操作系统源码分析,linux操作系统源代码详细分析.doc
  5. Atitit 大脑能够储存多大的数据量
  6. 北京54坐标转WGS84坐标
  7. 2022年江西省研究生数学建模竞赛冰壶运动求解全过程文档及程序
  8. kali linux win10桌面,一键伪装成Win 10,Kali Linux 2019年最终版重磅功能预览
  9. 使用Tensorflow Lite在Android上进行AI危害检测
  10. 利用Retrofit, RxJava获取网络内容
  11. html5输入框表情,H5页面input输入框含有键盘自带的表情符时显示异常
  12. System.gc()的理解
  13. 学习数据库视频笔记4
  14. gmail发邮件一直失败,解决办法
  15. 超市收费系统云服务器,云服务器超市
  16. CryEngine的Modular Behavior Tree简介
  17. php双月日历代码,PHP输出日历表代码实例
  18. tvs管参数数解读_浅析TVS管的特性及参数
  19. linux-xsync
  20. 学生上课睡觉班主任怎么处理_怎样解决学生上课睡觉的问题

热门文章

  1. 时钟服务器工作原理,Windows 时间服务的工作原理
  2. ​吃了假辣椒酱的企鹅,你遇到过哪些被骗的经历?
  3. CSS2:宽度与高度疑难点解析
  4. GifCam gif录制软件
  5. 【“BattenSnakexjp4.1”数据结构课程设计报告】
  6. 系统报错信息:[0x7FFA30288660] ANOMALY: meaningless REX prefix used
  7. OpenAI 首个研究成果 生成式模型系列
  8. 学习日志13:360安全浏览器远程代码执行漏洞
  9. C语言论坛系统[2023-01-03]
  10. 经常用的命令一(linux)