打印

STM32的JTAG引脚可以做普通IO么

[复制链接]
1285|12
手机看帖
扫描二维码
随时随地手机跟帖
沙发
manaok12345| | 2016-7-14 09:32 | 只看该作者
是可以的,但是需要进行解锁的吧。

使用特权

评论回复
板凳
叶覃| | 2016-7-14 23:07 | 只看该作者
可以的,用串口下载就好了,不用JTAG也是可以的。

使用特权

评论回复
地板
huafei123| | 2016-7-15 11:27 | 只看该作者
用SWD接口仿真时,JNTRST、JTDI、JTDO可以用作普通IO,其他的不可以。

使用特权

评论回复
5
mdk55555| | 2016-7-16 22:04 | 只看该作者

如果单纯用JTAG下载的话,是可以做普通IO的。如果要仿真的话,就不能做普通IO了。

使用特权

评论回复
6
haokeer| | 2016-7-18 16:59 | 只看该作者
#define GPIO_Remap_SWJ_JTAGDisable  ((uint32_t)0x00300200)  /*!< JTAG-DP Disabled and SW-DP Enabled */
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);      /*使能SWD 禁用JTAG*/
禁用JTAG功能就好了。

使用特权

评论回复
7
xiaolong12| | 2016-7-19 15:53 | 只看该作者
具体方法如下:
在GPIO_Configuration(); // 配置使用的 GPIO 口:

GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
// 改变指定管脚的映射 GPIO_Remap_SWJ_Disable SWJ 完全禁用(JTAG+SW-DP)
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
// 改变指定管脚的映射 GPIO_Remap_SWJ_JTAGDisable ,JTAG-DP 禁用 + SW-DP 使能

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

注意:不要忘记在RCC_Configuration()中开启AFIO时钟,
  //AFIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

使用特权

评论回复
8
喵喵小星人| | 2016-7-19 19:49 | 只看该作者

AFIO 时钟未设置,GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE) 这句不会生效,也就是要先设置时钟,才能配置相应端口
AFIO的时钟放在最前面。

使用特权

评论回复
9
maninman1981| | 2016-7-20 22:06 | 只看该作者

1、打开复用时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,EANBLE);
      2、调用重映射函数:GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
      进行上述配置后即可将JTAG下载引脚当成普通GPIO来使用了!

使用特权

评论回复
10
rmbass| | 2016-7-21 09:26 | 只看该作者
在F4中,就不用这么复杂了,直接和普通IO一样配置就好了。

使用特权

评论回复
11
yysforever| | 2016-7-22 10:55 | 只看该作者
在stm32f4中不是这样的,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为所需的模式就可以了!

使用特权

评论回复
12
冰是睡着的冰| | 2016-7-22 21:52 | 只看该作者
/*
禁用JTAG引脚,保留SWD引脚
其他JTAG引脚重新定义为普通IO
*/
void DisableJtag_enableSWD()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //开启AFIO时钟
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); //禁止JTAG功能
}

使用特权

评论回复
13
yesherecn| | 2016-7-23 11:56 | 只看该作者
也可以把SWD和JTAG都禁用,只用串口下载的。

使用特权

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

本版积分规则

8

主题

75

帖子

0

粉丝