OpenEdv-开源电子网

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

请教一个中断配置的问题?

[复制链接]

17

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-12-7
在线时间
0 小时
发表于 2015-7-23 17:44:13 | 显示全部楼层 |阅读模式
5金钱
我的中断配置代码如下,想问一下,为什么进入不了中断响应函数呢?谢谢
void EXTILine_Config(void)
{
NVIC_InitTypeDef   NVIC_InitStructure;
EXTI_InitTypeDef   EXTI_InitStructure;

GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_9|GPIO_Pin_6; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100M
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

 
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource0|EXTI_PinSource1|EXTI_PinSource9|EXTI_PinSource6);


  EXTI_InitStructure.EXTI_Line = EXTI_Line0|EXTI_Line1;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; 
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);

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


  EXTI_InitStructure.EXTI_Line = EXTI_Line6;//LINE0
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);


  EXTI_InitStructure.EXTI_Line = EXTI_Line9;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; 
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel= EXTI9_5_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority= 1;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void EXTI9_5_IRQHandler(void) 

int i; 

if(EXTI_GetITStatus(EXTI_Line9)!=RESET) 

EXTI_ClearFlag(EXTI_Line9); 
EXTI_ClearITPendingBit(EXTI_Line9);
sendFlag=0;
if(X1==0)
{
i=0;
}
else if(X1==1)
{
i=1;
}
if(PA9X==1)
{
if(HDir==1)
x=x+settings.pulse_equivalent_x/2;
else
x=x-settings.pulse_equivalent_x/2;
//PA9X=1;
}
if(PA11Z==1)
{
if(HDir==1)
z=z+settings.pulse_equivalent_z/2;
else
z=z-settings.pulse_equivalent_z/2;
//PA11Z=1;
}



if(EXTI_GetITStatus(EXTI_Line6)!=RESET) 

EXTI_ClearFlag(EXTI_Line6); 
sendFlag=0;
}
}

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

使用道具 举报

17

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-12-7
在线时间
0 小时
 楼主| 发表于 2015-7-23 17:49:43 | 显示全部楼层
还有一个问题,就是在PF8端口上加电压,竟然进入了EXTI9_5_IRQHandler中断响应函数,奇怪啊!
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-7-23 20:10:03 | 显示全部楼层
1、EXTI_InitStructure.EXTI_Line = EXTI_Line0|EXTI_Line1;

2、NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn|EXTI1_IRQn;

3、EXTI9_5_IRQHandler

以上问题:
1和2、好像没有这样的写法吧,记得都是分开来配置的
3、PIN8管脚的中断就是在这里的,看中断服务函数名称就知道了,这个服务函数是pin5 ~ pin9管脚通用的一个中断服务函数
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

17

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-12-7
在线时间
0 小时
 楼主| 发表于 2015-7-23 20:16:40 | 显示全部楼层
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource0|EXTI_PinSource1|EXTI_PinSource9|EXTI_PinSource6);这段语句是将PC9,PC6连接到中断线上,没有配置PF8啊?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165462
金钱
165462
注册时间
2010-12-1
在线时间
2114 小时
发表于 2015-7-23 22:14:19 | 显示全部楼层
好好学习下我们的例程先吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-20 16:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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