OpenEdv-开源电子网

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

还是SW-DP重映射问题+外部中断

[复制链接]

4

主题

8

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-4-8
在线时间
0 小时
发表于 2013-5-5 19:10:57 | 显示全部楼层 |阅读模式

禁用 SW
RCC->APB2ENR|=1<<0; 
AFIO->MAPR&=0XF8FFFFFF;  
AFIO->MAPR|=0X02000000; 只要加上这句,PB.9 外部中断就不好使了 除非把 26-24 位设置成 000 或无效的值

相关配置如下:没什么特别的 

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
  GPIO_Init(SC_PIN_OFF_GPIO, &GPIO_InitStructure);
 
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);

  EXTI_ClearITPendingBit(EXTI_Line9);
 
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  EXTI_InitStructure.EXTI_Line = EXTI_Line9;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);
 
  NVIC_ClearIRQChannelPendingBit(EXTI9_5_IRQChannel);

  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);   


Keil 调试时 程序全速运行 在 AFIO 寄存器窗口 手动将 AFIO_MAPR 的值由 0x02000000 改为 0x00000000 则 PB.9 中断好使
反之 手动由 0x00000000 改为 0x02000000 PB.9 中断失灵

以上两次实验都是在 程序全速运行 的状态下进行的
F103C8T6 库函数版本 V2.0.1
请问 是我没注意到什么?? 还是这两个功能先天冲突??
 多谢!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

8

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-4-8
在线时间
0 小时
 楼主| 发表于 2013-5-5 21:32:52 | 显示全部楼层
 Released only if not using asynchronous trace
只可在不使用异步跟踪时使用

和这句注释有什么关系吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-5 21:37:04 | 显示全部楼层
没遇到这么诡异的。
PB9和SW不冲突啊。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

8

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-4-8
在线时间
0 小时
 楼主| 发表于 2013-5-5 21:45:56 | 显示全部楼层

好吧,要是好使了我会回帖说明原因的

哪位有好的建议请赐教,多谢!

回复 支持 反对

使用道具 举报

4

主题

8

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-4-8
在线时间
0 小时
 楼主| 发表于 2013-5-7 07:59:40 | 显示全部楼层
原因如下: 
复用前
PB4 处于上拉输入状态,悬空时高电平
PB3 悬空时低电平
如果复用后(或复用前配置),PB3 或 PB4 的电平状态与以上不同,则 PB9 外部中断失灵。

只要保证 PB3 PB4 的电平如上所述,则 PB9 外部中断有效。

例如 PB3 PB4 均设置为 OUT_PP ,此时 PB3 PB4  都为低电平,PB9 中断无效,程序运行时,将 PB4 接到 VCC 则 PB9 外部中断又有效了,当然软件置高 PB4 也行,当然 PB3 也必须低。

所以,基本可以得出的结论就是:禁用 JTAG 后,仅当 PB3 =0 && B4 = 1 时来自 PB9  的外部中断有效,和配置 GPIO 的先后顺序(相对于禁用JTAG)、I/O 状态无关。

以上结论经过两种不同条件的测试,都是 F103C8T6 (我没有其他芯片),其中之一是最小系统板,没有来自其他硬件的干扰。

接触32时间不长,不过这个程序很简单了,但是仍不排除是程序的问题,只是我觉得看起来不太像

希望有人能重现这个问题,也希望能帮助遇到问题的朋友
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-7 10:29:29 | 显示全部楼层
有时间我整个代码测试下,不过应该不会有你说的问题,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

66

主题

237

帖子

0

精华

高级会员

Rank: 4

积分
943
金钱
943
注册时间
2013-5-17
在线时间
192 小时
发表于 2015-10-14 10:04:58 | 显示全部楼层
我现在发现PB6外中断不能用的问题了,PA口的就全是好的,很诡异,也是STM32C8T6
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 22:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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