[应用相关] 复用调试接口JTAG/SWD为普通GPIO

[复制链接]
601|8
 楼主| 梅花香自123 发表于 2021-8-6 13:16 | 显示全部楼层 |阅读模式
这几天做毕业设计,按键模块用到了PA14和PA15这两个IO口(由于IO是引出到拓展板上,所以刚开始并不知道PA14和PA15是被调试接口占用了)。设置好相应的寄存器后发现只有PA15正常按下能被拉低,而PA14用万用表检测始终处于低电平状态。刚开始我以为这个管脚坏了,就想着设置成输出高电平试试,结果可想而知,查看手册后发现在在复位后JTAG接口的PA14被设置为下拉了,所以按键读回来的永远是低电平。
———————————————— 59512610cc5b30b687.png

 楼主| 梅花香自123 发表于 2021-8-6 13:17 | 显示全部楼层
后来发现核心板上PA15引脚连接到了JTAG接口就想能不能通过复用把这几个口解放出来,毕竟在正常应用中调试接口是不工作的,还不如利用起来(其实是我懒得再改板子PCB了),后来查看手册发现真的可以复用起来。
 楼主| 梅花香自123 发表于 2021-8-6 13:17 | 显示全部楼层
手册描述如下 33120610cc5e9565e2.png
 楼主| 梅花香自123 发表于 2021-8-6 13:18 | 显示全部楼层
手册给了我们提示,只要设置AFIO的MAPP寄存器中的SWJ_CFG[2:0]这两位就能改变映射关系,所以只要能改变这个寄存器就OK啦。
 楼主| 梅花香自123 发表于 2021-8-6 13:18 | 显示全部楼层
具体的映射关系设置如下: 14651610cc625a5045.png
 楼主| 梅花香自123 发表于 2021-8-6 13:19 | 显示全部楼层
 楼主| 梅花香自123 发表于 2021-8-6 13:20 | 显示全部楼层
SWJ_CFG[2:0]的描述如下:
21429610cc68d22716.png
 楼主| 梅花香自123 发表于 2021-8-6 13:20 | 显示全部楼层
只要设置这三位为100,就能关闭调试接口,其所占用的IO就变成普通的GPIO了,这就达到了我的目的。既然找到了方法,那解决的办法就简单了。
  1. //重映射JTAG/SWD接口为普通GPIO
  2.     RCC->APB2ENR|=1;
  3.     AFIO->MAPR&=0xf8ffffff;
  4.     AFIO->MAPR|=0x04000000;
 楼主| 梅花香自123 发表于 2021-8-6 13:21 | 显示全部楼层
很简单,至于为什么AFIO->MAPR这么设置,只要看懂手册就行啦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

1216

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部