OpenEdv-开源电子网

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

exti的问题!!

[复制链接]

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2010-12-15
在线时间
3 小时
发表于 2011-11-29 16:47:26 | 显示全部楼层 |阅读模式
我用IO口做外部中断,使用的是PROT5口,设置都是按照教程上的设置。C5口为内部上拉,其余C6789口为输出,时钟设置正常;EXTICR设置正常;Ex_NVIC_Config(GPIO_C,5,FTIR);中断子程序中也有情中断标志位。mian函数中没有写东西,空的while运行,中断子程序中我想让C5口拉低后LED灯亮1s后关灯。
运行结果是led灯一直长亮,检测io口C5时是高电平,按键按下时C5变为低。在中断中设断点,无操作自己进入中断EXTI9_5_IRQHandler()。
请版主指教,谢谢。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-11-29 17:02:16 | 显示全部楼层
中断里面,你怎么处理的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2010-12-15
在线时间
3 小时
 楼主| 发表于 2011-11-30 10:01:47 | 显示全部楼层
{
if(EXTI_GetITStatus(EXTI_Line5) != RESET)
{
EXTI_ClearITPendingBit(EXTI_Line5);  //清外部中断0
LED1_ON;

if (GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)==0)
{
LED2_ON;
delay_ms(1000);
}
  

 
}
就这样,我是做实验所以加了死延时。
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2010-12-15
在线时间
3 小时
 楼主| 发表于 2011-11-30 10:02:30 | 显示全部楼层
回复【3楼】ALEX741123:
---------------------------------
void EXTI9_5_IRQHandler(void)
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-11-30 10:30:38 | 显示全部楼层
回复【4楼】ALEX741123:
---------------------------------
仿真看看.
你是跳入中断,就不跳出去了么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2010-12-15
在线时间
3 小时
 楼主| 发表于 2011-11-30 13:35:19 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
目前是进不了中断了。。。。。。真奇怪
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2010-12-15
在线时间
3 小时
 楼主| 发表于 2011-11-30 14:07:55 | 显示全部楼层
补充一下不是进不了中断,我试过,void EXTI0_IRQHandler(void) 可以进入,但是void EXTI9_5_IRQHandler(void)这个就是进入不了,不知道是怎么回事。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-11-30 14:19:04 | 显示全部楼层
回复【7楼】ALEX741123:
---------------------------------
配置问题吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2010-12-15
在线时间
3 小时
 楼主| 发表于 2011-11-30 14:24:32 | 显示全部楼层
void Exti_Init(void)
   {
      EXTI_InitTypeDef  EXTI_InitStructure;
      NVIC_InitTypeDef  NVIC_InitStructure;
  EXTI_DeInit();
      GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);//定义PA0为外部中断
      GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5);//定义PC5为外部中断
      

   
      EXTI_InitStructure.EXTI_Line  = EXTI_Line5; 
      EXTI_InitStructure.EXTI_Mode  = EXTI_Mode_Interrupt; 
      EXTI_InitStructure.EXTI_Trigger  = EXTI_Trigger_Falling; //下降沿触发

      EXTI_InitStructure.EXTI_LineCmd  = ENABLE; 
      EXTI_Init(&EXTI_InitStructure);
  EXTI_ClearITPendingBit(EXTI_Line5);

      EXTI_InitStructure.EXTI_Line  = EXTI_Line0; 
      EXTI_InitStructure.EXTI_Mode  = EXTI_Mode_Interrupt; 
      EXTI_InitStructure.EXTI_Trigger  = EXTI_Trigger_Rising;  //上升沿触发

      EXTI_InitStructure.EXTI_LineCmd  = ENABLE; 
      EXTI_Init(&EXTI_InitStructure);
  EXTI_ClearITPendingBit(EXTI_Line0);
  
   
        //定义外部中断0中断优先级
      NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel; 
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =3;
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; 
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
      NVIC_Init(&NVIC_InitStructure);

       //定义外部中断1中断优先级
      NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; 
      NVIC_Init(&NVIC_InitStructure);
}
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2010-12-15
在线时间
3 小时
 楼主| 发表于 2011-11-30 14:26:12 | 显示全部楼层
我没有发现有不对的地方啊~
很奇怪。。。。。
回复 支持 反对

使用道具 举报

20

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
308
金钱
308
注册时间
2013-11-6
在线时间
23 小时
发表于 2013-12-3 16:09:20 | 显示全部楼层
回复【8楼】正点原子:
回复【7楼】ALEX741123:
---------------------------------
配置问题吧.
---------------------------------
請問原子哥~我也有此問題,你說配置問題,可以幫我看一下我的配置那錯了.
void EXTIX_Init(void)
{
 
  EXTI_InitTypeDef EXTI_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;

    KEY_Init();

   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

 
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
EXTI_InitStructure.EXTI_Line=EXTI_Line0;

   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
   EXTI_InitStructure.EXTI_LineCmd = ENABLE;
   EXTI_Init(&EXTI_InitStructure);  

  GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource11); 
  EXTI_InitStructure.EXTI_Line=EXTI_Line11;
EXTI_Init(&EXTI_InitStructure);

   NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
   NVIC_Init(&NVIC_InitStructure); 


   NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
   NVIC_Init(&NVIC_InitStructure);     

void EXTI15_10IRQHandler(void)
{
u8 key=0;
delay_ms(10);
key=KEY_Scan(1);
if (EXTI_GetITStatus(EXTI_Line11) != RESET)
{if(KEY2==0)    
{  
LED1=!LED1;
if(key!=0)
printf("%d",key);

}
EXTI_ClearITPendingBit(EXTI_Line11); 
}
}
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-8 07:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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