OpenEdv-开源电子网

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

外部中断(中断关闭)

[复制链接]

24

主题

67

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
210
金钱
210
注册时间
2012-8-9
在线时间
7 小时
发表于 2013-3-2 15:51:24 | 显示全部楼层 |阅读模式
我想在外部中断7的中断程序中关闭外部中断(EXTI_InitStructure.EXTI_LineCmd = DISABLE),为什么关闭不了??

void EXTI9_5_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line5)==SET)
{
TIM_Cmd(TIM1 , DISABLE);
Delay_msec(1000);
TIM_Cmd(TIM1 , ENABLE);
EXTI_ClearFlag(EXTI_Line5);
}
else 
{
TIM_Cmd(TIM1 , DISABLE);
ShaftC();
TIM_Cmd(TIM1 , ENABLE);
EXTI_ClearFlag(EXTI_Line7);
        EXITOFF();
}
}
void EXITOFF()
EXTI_InitTypeDef EXTI_InitStructure;
  EXTI_InitStructure.EXTI_LineCmd = DISABLE;
  EXTI_Init(&EXTI_InitStructure);
}


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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-2 17:24:07 | 显示全部楼层
回复【楼主位】humohanyu:
---------------------------------
你这调用的有问题吧,都没指定是关闭哪个中断.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-2 17:24:17 | 显示全部楼层
void EXITOFF()

EXTI_InitTypeDef EXTI_InitStructure;
   EXTI_InitStructure.EXTI_LineCmd = DISABLE;
   EXTI_Init(&EXTI_InitStructure);
}
这个函数.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

24

主题

67

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
210
金钱
210
注册时间
2012-8-9
在线时间
7 小时
 楼主| 发表于 2013-3-2 17:31:47 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
一共用了GPIOD2,4,5,7 四个中断,放在void EXTI2_IRQHandler(void)和void EXTI4_IRQHandler(void)里面时可以关闭所有中断,放在void EXTI9_5_IRQHandler(void)里面就不行
回复 支持 反对

使用道具 举报

24

主题

67

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
210
金钱
210
注册时间
2012-8-9
在线时间
7 小时
 楼主| 发表于 2013-3-6 17:13:01 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
找到问题了,要加上
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
这一句,
因为操作寄存器时要用到这个值EXTI_InitStruct->EXTI_Mode:
*(vu32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)&= ~EXTI_InitStruct->EXTI_Line;
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-23 04:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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