打印
[应用相关]

复用调试接口JTAG/SWD为普通GPIO

[复制链接]
402|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
这几天做毕业设计,按键模块用到了PA14和PA15这两个IO口(由于IO是引出到拓展板上,所以刚开始并不知道PA14和PA15是被调试接口占用了)。设置好相应的寄存器后发现只有PA15正常按下能被拉低,而PA14用万用表检测始终处于低电平状态。刚开始我以为这个管脚坏了,就想着设置成输出高电平试试,结果可想而知,查看手册后发现在在复位后JTAG接口的PA14被设置为下拉了,所以按键读回来的永远是低电平。
————————————————

使用特权

评论回复
沙发
梅花香自123|  楼主 | 2021-8-6 13:17 | 只看该作者
后来发现核心板上PA15引脚连接到了JTAG接口就想能不能通过复用把这几个口解放出来,毕竟在正常应用中调试接口是不工作的,还不如利用起来(其实是我懒得再改板子PCB了),后来查看手册发现真的可以复用起来。

使用特权

评论回复
板凳
梅花香自123|  楼主 | 2021-8-6 13:17 | 只看该作者
手册描述如下

使用特权

评论回复
地板
梅花香自123|  楼主 | 2021-8-6 13:18 | 只看该作者
手册给了我们提示,只要设置AFIO的MAPP寄存器中的SWJ_CFG[2:0]这两位就能改变映射关系,所以只要能改变这个寄存器就OK啦。

使用特权

评论回复
5
梅花香自123|  楼主 | 2021-8-6 13:18 | 只看该作者
具体的映射关系设置如下:

使用特权

评论回复
6
梅花香自123|  楼主 | 2021-8-6 13:19 | 只看该作者

使用特权

评论回复
7
梅花香自123|  楼主 | 2021-8-6 13:20 | 只看该作者
SWJ_CFG[2:0]的描述如下:

使用特权

评论回复
8
梅花香自123|  楼主 | 2021-8-6 13:20 | 只看该作者
只要设置这三位为100,就能关闭调试接口,其所占用的IO就变成普通的GPIO了,这就达到了我的目的。既然找到了方法,那解决的办法就简单了。
 //重映射JTAG/SWD接口为普通GPIO
    RCC->APB2ENR|=1;
    AFIO->MAPR&=0xf8ffffff;
    AFIO->MAPR|=0x04000000;

使用特权

评论回复
9
梅花香自123|  楼主 | 2021-8-6 13:21 | 只看该作者
很简单,至于为什么AFIO->MAPR这么设置,只要看懂手册就行啦。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

1108

帖子

0

粉丝