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

来源:互联网 发布:站长查询SEO是什么意思 编辑:程序博客网 时间:2024/06/04 18:05

这几天做毕业设计,按键模块用到了PA14和PA15这两个IO口(由于IO是引出到拓展板上,所以刚开始并不知道PA14和PA15是被调试接口占用了)。设置好相应的寄存器后发现只有PA15正常按下能被拉低,而PA14用万用表检测始终处于低电平状态。刚开始我以为这个管脚坏了,就想着设置成输出高电平试试,结果可想而知,查看手册后发现在在复位后JTAG接口的PA14被设置为下拉了,所以按键读回来的永远是低电平。
症结所在
后来发现核心板上PA15引脚连接到了JTAG接口就想能不能通过复用把这几个口解放出来,毕竟在正常应用中调试接口是不工作的,还不如利用起来(其实是我懒得再改板子PCB了),后来查看手册发现真的可以复用起来。

手册描述如下
STM32中文参考手册

手册给了我们提示,只要设置AFIO的MAPP寄存器中的SWJ_CFG[2:0]这两位就能改变映射关系,所以只要能改变这个寄存器就OK啦。

具体的映射关系设置如下:
调试接口映射关系图

复用重映射和调试I/O配置寄存器(AFIO_MAPR)

SWJ_CFG[2:0]的描述如下:
这里写图片描述

只要设置这三位为100,就能关闭调试接口,其所占用的IO就变成普通的GPIO了,这就达到了我的目的。既然找到了方法,那解决的办法就简单了。

    //重映射JTAG/SWD接口为普通GPIO    RCC->APB2ENR|=1;    AFIO->MAPR&=0xf8ffffff;    AFIO->MAPR|=0x04000000;

很简单,至于为什么AFIO->MAPR这么设置,只要看懂手册就行啦。

1 0