OpenEdv-开源电子网

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

stm32f103rct6的PB3口关闭JTAG后仍然无法使用

[复制链接]

15

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2019-5-30
在线时间
78 小时
发表于 2020-1-10 12:20:36 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 feat0506 于 2020-1-10 12:25 编辑

如题,,,

        EXTI_InitTypeDef EXTI_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;

         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
        
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 
         GPIO_Init(GPIOB, &GPIO_InitStructure);

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource3);
          EXTI_InitStructure.EXTI_Line=EXTI_Line3;
          EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;        
          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
          EXTI_InitStructure.EXTI_LineCmd = ENABLE;
          EXTI_Init(&EXTI_InitStructure);

          NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
          NVIC_Init(&NVIC_InitStructure); 同样的代码在其他IO口就可以正常触发中断,板子自己做的,也测到中断信号了,也尝试关闭跟踪了,但是在PB3就是无法触发中断。。。求大佬指点迷津

最佳答案

查看完整内容[请看2#楼]

使用SW并且PB3可控的配置代码,注意时能AFIO。 RCC->APB2ENR |= 1 | (1CR & ~((uint32_t)1MAPR & ~((uint32_t)0x7
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2020-1-11
在线时间
19 小时
发表于 2020-1-10 12:20:37 | 显示全部楼层
使用SW并且PB3可控的配置代码,注意时能AFIO。 RCC->APB2ENR |= 1 |  (1<<3);  /*AFIO/ GPIOB*/ DBGMCU->CR = DBGMCU->CR & ~((uint32_t)1<<5);  AFIO->MAPR |= (AFIO->MAPR & ~((uint32_t)0x7 << 24)) | (2 << 24); //SW模式
回复

使用道具 举报

15

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2019-5-30
在线时间
78 小时
 楼主| 发表于 2020-1-10 12:21:27 | 显示全部楼层
自己做的板子,中断信号正常,也尝试关闭跟踪了,还是无法使用。。。求大佬指点迷津
回复

使用道具 举报

15

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2019-5-30
在线时间
78 小时
 楼主| 发表于 2020-1-10 12:22:57 | 显示全部楼层
同样的代码在其他IO口就可以正常触发中断
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14410
金钱
14410
注册时间
2018-8-3
在线时间
1156 小时
发表于 2020-1-10 14:34:37 | 显示全部楼层
检查下原理图 是不是有上下拉电阻这些
回复

使用道具 举报

15

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2019-5-30
在线时间
78 小时
 楼主| 发表于 2020-1-13 09:12:34 | 显示全部楼层
翼行园子 发表于 2020-1-10 14:34
检查下原理图 是不是有上下拉电阻这些

没有上下拉电阻,中断信号直接进IO
回复

使用道具 举报

0

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2020-1-11
在线时间
19 小时
发表于 2020-2-19 18:10:04 | 显示全部楼层
http://www.openedv.com/forum.php ... 8&highlight=PB3    这里有解决方案,虽然我没看懂为啥,但能用了
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2020-8-13
在线时间
4 小时
发表于 2021-5-14 20:26:23 | 显示全部楼层
你如果勾选了TRACE

搜狗截图20210514195008.png
TRACE_IOEN 就会被置位
搜狗截图20210514191733.png
搜狗截图20210514201025.png


GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);     //禁用JTAG

这个操作PB3 ODR 不起作用是因为DBGMCU_CR寄存器的TRACE_IOEN位被调试器置1,PB3还是在 TRACESWO 模式,这个值只有在上电复位后才能被复位。所以不要勾选TRACE,再掉电复位一下,就可以了。

如果需要勾选TRACE功能调试怎么办呢?程序置0一下:

DBGMCU->CR = DBGMCU->CR & ~((uint32_t)1<<5);

但是上电复位后第一次程序设置不起作用!点一下调试软件复位按钮复位一下,之后才可以正常使用。
这个只是影响都调试,不调试的程序是不影响的。




回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-23 23:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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