OpenEdv-开源电子网

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

请问外部中断的事件触发方式怎么配置的呀??

[复制链接]

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2016-11-7
在线时间
39 小时
发表于 2017-1-14 10:53:58 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

448

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1755
金钱
1755
注册时间
2015-2-7
在线时间
369 小时
发表于 2017-1-15 17:35:31 | 显示全部楼层
参考原子哥的外部中断实验呀。代码、资料什么都可以免费下载的。
回复

使用道具 举报

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2016-11-7
在线时间
39 小时
 楼主| 发表于 2017-1-15 19:09:01 | 显示全部楼层
电子之旅 发表于 2017-1-15 17:35
参考原子哥的外部中断实验呀。代码、资料什么都可以免费下载的。

原子哥的代码我已经看了,可是还是不会那个外部中断的事件触发方式,可以给个代码看一哈吗
回复

使用道具 举报

13

主题

448

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1755
金钱
1755
注册时间
2015-2-7
在线时间
369 小时
发表于 2017-1-16 08:43:21 | 显示全部楼层
heqicheng 发表于 2017-1-15 19:09
原子哥的代码我已经看了,可是还是不会那个外部中断的事件触发方式,可以给个代码看一哈吗

[mw_shl_code=c,true]//////////////////////////////////////////////////////////////////////////////////         
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK战舰STM32开发板
//外部中断 驱动代码          
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//修改日期:2012/9/3
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2009-2019
//All rights reserved                                                                          
//////////////////////////////////////////////////////////////////////////////////   
//外部中断0服务程序
void EXTIX_Init(void)
{

        EXTI_InitTypeDef EXTI_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;

    KEY_Init();         //        按键端口初始化

          RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);        //使能复用功能时钟

    //GPIOE.2 中断线以及中断初始化配置   下降沿触发
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);

          EXTI_InitStructure.EXTI_Line=EXTI_Line2;        //KEY2
          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寄存器

   //GPIOE.3          中断线以及中断初始化配置 下降沿触发 //KEY1
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3);
          EXTI_InitStructure.EXTI_Line=EXTI_Line3;
          EXTI_Init(&EXTI_InitStructure);                  //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

   //GPIOE.4          中断线以及中断初始化配置  下降沿触发        //KEY0
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);
          EXTI_InitStructure.EXTI_Line=EXTI_Line4;
          EXTI_Init(&EXTI_InitStructure);                  //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器


   //GPIOA.0          中断线以及中断初始化配置 上升沿触发 PA0  WK_UP
         GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);

          EXTI_InitStructure.EXTI_Line=EXTI_Line0;
          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
          EXTI_Init(&EXTI_InitStructure);                //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器


          NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;                        //使能按键WK_UP所在的外部中断通道
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        //抢占优先级2,
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03;                                        //子优先级3
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断通道
          NVIC_Init(&NVIC_InitStructure);

    NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;                        //使能按键KEY2所在的外部中断通道
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        //抢占优先级2,
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;                                        //子优先级2
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断通道
          NVIC_Init(&NVIC_InitStructure);


          NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;                        //使能按键KEY1所在的外部中断通道
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        //抢占优先级2
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;                                        //子优先级1
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断通道
          NVIC_Init(&NVIC_InitStructure);            //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器

        NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;                        //使能按键KEY0所在的外部中断通道
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        //抢占优先级2
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;                                        //子优先级0
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断通道
          NVIC_Init(&NVIC_InitStructure);            //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器

}

//外部中断0服务程序
void EXTI0_IRQHandler(void)
{
        delay_ms(10);//消抖
        if(WK_UP==1)                  //WK_UP按键
        {                                 
                BEEP=!BEEP;       
        }
        EXTI_ClearITPendingBit(EXTI_Line0); //清除LINE0上的中断标志位  
}

//外部中断2服务程序
void EXTI2_IRQHandler(void)
{
        delay_ms(10);//消抖
        if(KEY2==0)          //按键KEY2
        {
                LED0=!LED0;
        }                 
        EXTI_ClearITPendingBit(EXTI_Line2);  //清除LINE2上的中断标志位  
}
//外部中断3服务程序
void EXTI3_IRQHandler(void)
{
        delay_ms(10);//消抖
        if(KEY1==0)         //按键KEY1
        {                                 
                LED1=!LED1;
        }                 
        EXTI_ClearITPendingBit(EXTI_Line3);  //清除LINE3上的中断标志位  
}

void EXTI4_IRQHandler(void)
{
        delay_ms(10);//消抖
        if(KEY0==0)         //按键KEY0
        {
                LED0=!LED0;
                LED1=!LED1;
        }                 
        EXTI_ClearITPendingBit(EXTI_Line4);  //清除LINE4上的中断标志位  
}

[/mw_shl_code]
回复

使用道具 举报

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2016-11-7
在线时间
39 小时
 楼主| 发表于 2017-2-15 17:54:37 | 显示全部楼层
电子之旅 发表于 2017-1-16 08:43
[mw_shl_code=c,true]////////////////////////////////////////////////////////////////////////////// ...

这个中断触发我懂,可以给出一个事件触发的代码吗?万分感谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 17:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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