OpenEdv-开源电子网

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

设置PD6,7,8响应中断,中断初始化及服务函数这样写对吗

[复制链接]

82

主题

194

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2015-10-16
在线时间
72 小时
发表于 2015-10-31 22:44:50 | 显示全部楼层 |阅读模式
5金钱
void EXTIX_Init(void)
{  
 
  EXTI_InitTypeDef EXTI_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
    GPIO_InitTypeDef  GPIO_InitStructure;


  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //使能复用功能时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
  GPIO_Init(GPIOD, &GPIO_InitStructure); 

  //GPIOD.6 中断线以及中断初始化配置   下降沿触发
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource6);

  EXTI_InitStructure.EXTI_Line=EXTI_Line6;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

 //GPIOD.7  中断线以及中断初始化配置 下降沿触发 
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource7);
  EXTI_InitStructure.EXTI_Line=EXTI_Line7;
  EXTI_Init(&EXTI_InitStructure);   //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

 //GPIOD.8  中断线以及中断初始化配置  下降沿触发 
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource8);
  EXTI_InitStructure.EXTI_Line=EXTI_Line8;
  EXTI_Init(&EXTI_InitStructure);   //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; 
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道
  NVIC_Init(&NVIC_InitStructure); 

void EXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line6)!=RESET)
{

BEEP=!BEEP;
EXTI_ClearITPendingBit(EXTI_Line6);
}
else if(EXTI_GetITStatus(EXTI_Line7)!=RESET)
{

LED0=!LED0;

EXTI_ClearITPendingBit(EXTI_Line7);
}
else 
{

LED1=!LED1;

EXTI_ClearITPendingBit(EXTI_Line8);
}
}

最佳答案

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

使用道具 举报

12

主题

336

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1576
金钱
1576
注册时间
2015-8-9
在线时间
625 小时
发表于 2015-10-31 22:44:51 | 显示全部楼层
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-10-31 23:06:48 | 显示全部楼层
IO配置为输入模式
回复

使用道具 举报

82

主题

194

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2015-10-16
在线时间
72 小时
 楼主| 发表于 2015-11-1 09:38:11 | 显示全部楼层
回复【2楼】lycreturn:
---------------------------------
为什么是输入啊?那要设置成哪种输入模式,其他的程序对吗?
回复

使用道具 举报

82

主题

194

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2015-10-16
在线时间
72 小时
 楼主| 发表于 2015-11-1 10:14:21 | 显示全部楼层
回复【4楼】Akatsuki_lim:
---------------------------------
那我想测试下6路的中断怎么给PD6一个下降沿啊?
回复

使用道具 举报

12

主题

336

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1576
金钱
1576
注册时间
2015-8-9
在线时间
625 小时
发表于 2015-11-1 10:48:20 | 显示全部楼层
PD6接一个按键,按下按键就产生一个下降沿咯
回复

使用道具 举报

82

主题

194

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2015-10-16
在线时间
72 小时
 楼主| 发表于 2015-11-1 10:55:45 | 显示全部楼层
回复【6楼】Akatsuki_lim:
------------------------------
然后问题就在这,不知道怎么将PD6接一个按键
回复

使用道具 举报

12

主题

336

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1576
金钱
1576
注册时间
2015-8-9
在线时间
625 小时
发表于 2015-11-1 11:18:57 | 显示全部楼层
回复【7楼】liuxiangyong:
---------------------------------
最简单的方法:用杜邦线一端接在PD6的排针上,另外一端悬空,要产生低电平时,另外一端接在GND上。
这样可以粗略地产生一个低电平,但不保证不会有噪声干扰
回复

使用道具 举报

82

主题

194

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2015-10-16
在线时间
72 小时
 楼主| 发表于 2015-11-1 14:15:28 | 显示全部楼层
回复【8楼】Akatsuki_lim:
---------------------------------
好了,验证成功了,谢谢了!不过这里有之前的两个疑惑望解答下
1、为什么这里必须要设置成输入,设置成输出就不行了(我一开始是初始设置678口置1,然后主函数里让6口置0,这样不是也产生一个下降沿吗,但没用)?
2、我一开始想给PD6输入一个低电平,用的是GPIO_SetBits()函数怎么不行,这个函数不是可以用来设置端口的输出和输入吗
回复

使用道具 举报

12

主题

336

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1576
金钱
1576
注册时间
2015-8-9
在线时间
625 小时
发表于 2015-11-1 19:57:02 | 显示全部楼层
回复【9楼】liuxiangyong:
---------------------------------
 首先,你配置的是“外部”中断,自然是由外部条件引发中断的,简单来说是判断外围设备给的信号是否满足引发中断,如果满足就今日中断服务函数。既然是判断外部条件,肯定是要配置成输入模式。
内部软件对IO口拉高拉低是不能够触发中断条件的。

敢问楼主51单片机学得怎样?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 11:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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