OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 25832|回复: 14

如何关闭jtag保留swd

[复制链接]

19

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
139
金钱
139
注册时间
2012-4-16
在线时间
0 小时
发表于 2012-4-17 10:32:38 | 显示全部楼层 |阅读模式

手册中一下的这些我也能看懂,但不知道怎么去配置,或者说不知道怎样使用函数库中的函数进行操作,也不会使用位操作单独的将下面的几位进行配置。怎么办?
SWJ_CFG[2:0] :

串行线JTAG 配置 (Serial wire JTAG configuration)  位26:24 
这些位只能由软件写( 读这些位,将返回未定义的数值) ,用于配置SWJ和跟踪复用功能的I/O
口。SWJ(串行线JTAG) 支持JTAG 或SWD访问Cortex 的调试端口。系统复位后的默认状态是启
用SWJ但没有跟踪功能,这种状态下可以通过JTMS/JTCK脚上的特定信号选择JTAG 或SW( 串
行线)模式。 
000 :完全SWJ(JTAG-DP + SW-DP):复位状态; 
001 :完全SWJ(JTAG-DP + SW-DP)但没有NJTRST ; 
010 :关闭JTAG-DP,启用SW-DP; 
100 :关闭JTAG-DP,关闭SW-DP; 
其它组合:无作用
我想超越这平凡的生活,注定现在暂时的漂泊!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2016-6-28
在线时间
7 小时
发表于 2016-6-28 16:34:10 | 显示全部楼层
调试了半天终于解决了
GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//要先开时钟,再重映射;关闭jtag,保留swd。       
       
        GPIO_InitStructure.GPIO_Pin = LED_PIN;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_Init(LED_PORT, &GPIO_InitStructure);       
亲测通过
回复 支持 1 反对 0

使用道具 举报

28

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
461
金钱
461
注册时间
2013-10-18
在线时间
72 小时
发表于 2015-3-21 15:52:03 | 显示全部楼层





你的有问题
回复 支持 0 反对 1

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-4-17 10:38:28 | 显示全部楼层
回复【楼主位】胡杨:
--------------------------------
多练习.先把会的搞熟了.这些不会的自然就慢慢的会了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
139
金钱
139
注册时间
2012-4-16
在线时间
0 小时
 楼主| 发表于 2012-4-17 10:42:36 | 显示全部楼层
哈哈,搞定
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//关闭jtag,保留swd。

我发现参考手册和固件库中文手册,真他大爷的是个好东西!要是能全部下载到大脑里就好了。
我想超越这平凡的生活,注定现在暂时的漂泊!
回复 支持 反对

使用道具 举报

3

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-7-8
在线时间
0 小时
发表于 2013-7-11 22:48:16 | 显示全部楼层
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable ,DISABLE );

刚刚试了 也不能把JTAG释放为 普通GPIO
回复 支持 反对

使用道具 举报

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2013-9-18
在线时间
0 小时
发表于 2013-9-18 22:54:09 | 显示全部楼层
回复【3楼】胡杨:
---------------------------------
我这两天也是,突然发现手册是个好东西,能深入的了解。不至于就让别人那么做而不知道为什么了
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-10-23
在线时间
0 小时
发表于 2013-11-9 17:10:34 | 显示全部楼层
回复【3楼】胡杨:

哈哈,搞定
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//关闭jtag,保留swd。
我发现参考手册和固件库中文手册,真他大爷的是个好东西!要是能全部下载到大脑里就好了。

---------------------------------
还是不能释放为普通IO,继续找办法
为着自己的梦想,努力向前
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5184
金钱
5184
注册时间
2013-10-22
在线时间
376 小时
发表于 2013-11-9 19:47:10 | 显示全部楼层
这个应该设置GPIO的
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2012-12-4
在线时间
0 小时
发表于 2013-11-11 01:24:34 | 显示全部楼层
拿去参考~!
//JTAG模式设置,用于设置JTAG模式
//mode:jtag,swd模式设置; 00,全使能;01,使能SWD; 10,全关闭     
void JTAG_Set(u8 mode)
{
u32 temp;
temp=mode;
temp<<=25;
RCC->APB2ENR|=1<<0;     //?????¨?ú?±??   
AFIO->MAPR&=0XF8FFFFFF; //????MAPR??[26:24]
AFIO->MAPR|=temp;       //?è??jtag????
回复 支持 反对

使用道具 举报

16

主题

189

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1296
金钱
1296
注册时间
2013-8-27
在线时间
503 小时
发表于 2015-1-7 14:06:18 | 显示全部楼层
回复【8楼】odleio:
---------------------------------
赞一个好用!
回复 支持 反对

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2014-4-26
在线时间
1 小时
发表于 2015-3-11 23:56:49 | 显示全部楼层
应该是没有开启AFIO模式
回复 支持 反对

使用道具 举报

7

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2015-3-14
在线时间
33 小时
发表于 2015-4-8 14:18:44 | 显示全部楼层


根据资料:
完全SWJ(JTAG-DP + SW-DP):复位状态;          应该是0x00
完全SWJ(JTAG-DP + SW-DP)但没有NJTRST;      应该是 0x01
关闭JTAG-DP,启用SW-DP;                                应该是0x02
关闭JTAG-DP,关闭SW-DP;                                 应该是0x04 

原子例程里面设置是:

//mode:jtag,swd模式设置;00,全使能;01,使能SWD;10,全关闭;   
//#define JTAG_SWD_DISABLE   0X02          //10,全关闭;   
//#define SWD_ENABLE         0X01             //01,使能SWD
//#define JTAG_SWD_ENABLE    0X00       //00,全使能

原子设置是不是和STM32手册里面的设置有点不一样啊?能否请坛主给我们澄清下,哪个是正确的 我们是STM32新手。

void JTAG_Set(u8 mode)
{
u32 temp;
temp=mode;
temp<<=25;
RCC->APB2ENR|=1<<0;     //开启辅助时钟   
AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]
AFIO->MAPR|=temp;       //设置jtag模式


这个temp<<=25,是将数据移动到SWJ_CFG[2:0] ,我数了下,应该是移动24位吧?!

恳请坛主帮下我,解决我的疑惑!

谢谢

回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2016-7-15
在线时间
6 小时
发表于 2016-10-24 22:13:37 | 显示全部楼层
挺有用的   刚刚遇到这个问题
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2019-7-9
在线时间
16 小时
发表于 2019-8-10 13:10:09 | 显示全部楼层
将lcd.c中的一行按如下修改即可关闭JTAG,使能SWD

//__HAL_AFIO_REMAP_SWJ_DISABLE();                               
_HAL_AFIO_REMAP_SWJ_NOJTAG();
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-26 15:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表