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

[复制链接]
2312|12
 楼主| songlaijun 发表于 2016-7-13 14:06 | 显示全部楼层 |阅读模式
STM32的JTAG引脚可以做普通IO么,引脚设计不够用了
manaok12345 发表于 2016-7-14 09:32 | 显示全部楼层
是可以的,但是需要进行解锁的吧。
叶覃 发表于 2016-7-14 23:07 | 显示全部楼层
可以的,用串口下载就好了,不用JTAG也是可以的。
huafei123 发表于 2016-7-15 11:27 | 显示全部楼层
用SWD接口仿真时,JNTRST、JTDI、JTDO可以用作普通IO,其他的不可以。
mdk55555 发表于 2016-7-16 22:04 | 显示全部楼层

如果单纯用JTAG下载的话,是可以做普通IO的。如果要仿真的话,就不能做普通IO了。
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功能就好了。
xiaolong12 发表于 2016-7-19 15:53 | 显示全部楼层
  1. 具体方法如下:
  2. 在GPIO_Configuration(); // 配置使用的 GPIO 口:

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

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

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

  15. 注意:不要忘记在RCC_Configuration()中开启AFIO时钟,
  16.   //AFIO时钟
  17. RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
喵喵小星人 发表于 2016-7-19 19:49 | 显示全部楼层

AFIO 时钟未设置,GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE) 这句不会生效,也就是要先设置时钟,才能配置相应端口
AFIO的时钟放在最前面。
maninman1981 发表于 2016-7-20 22:06 | 显示全部楼层

1、打开复用时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,EANBLE);
      2、调用重映射函数:GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
      进行上述配置后即可将JTAG下载引脚当成普通GPIO来使用了!
rmbass 发表于 2016-7-21 09:26 | 显示全部楼层
在F4中,就不用这么复杂了,直接和普通IO一样配置就好了。
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为所需的模式就可以了!
冰是睡着的冰 发表于 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功能
}
yesherecn 发表于 2016-7-23 11:56 | 显示全部楼层
也可以把SWD和JTAG都禁用,只用串口下载的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

75

帖子

0

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