OpenEdv-开源电子网

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

这里外部中断是由PA0上升沿触发的,可是在中断处理的时候却要等待3秒钟,这样中断会一直停在那吗

[复制链接]

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2016-11-7
在线时间
39 小时
发表于 2016-11-25 10:52:59 | 显示全部楼层 |阅读模式
1金钱
u8 Check_WKUP(void)
{
        u8 t=0;        //记录按下的时间
        LED0=0; //亮灯DS0
        while(1)
        {
                if(WKUP_KD)
                {
                        t++;                        //已经按下了
                        delay_ms(30);
                        if(t>=100)                //按下超过3秒钟
                        {
                                LED0=0;                 //点亮DS0
                                return 1;         //按下3s以上了
                        }
                }else
                {
                        LED0=1;
                        return 0; //按下不足3秒
                }
        }
}
//中断,检测到PA0脚的一个上升沿.          
//中断线0线上的中断检测


void EXTI0_IRQHandler(void)
{                                                                                                  
        EXTI_ClearITPendingBit(EXTI_Line0); // 清除LINE10上的中断标志位                  
        if(Check_WKUP())//关机?
        {                  
                Sys_Enter_Standby();  
        }
}
//PA0 WKUP唤醒初始化
void WKUP_Init(void)
{       
  GPIO_InitTypeDef  GPIO_InitStructure;                    
        NVIC_InitTypeDef NVIC_InitStructure;
        EXTI_InitTypeDef EXTI_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);//使能GPIOA和复用功能时钟

        GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;         //PA.0
        GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPU;//上拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);        //初始化IO
    //使用外部中断方式
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);        //中断线0连接GPIOA.0

  EXTI_InitStructure.EXTI_Line = EXTI_Line0;        //设置按键所有的外部线路
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;                        //设外外部中断模式:EXTI线路为中断请求
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  //上升沿触发
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);        // 初始化外部中断

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

        if(Check_WKUP()==0) Sys_Standby();    //不是开机,进入待机模式  
       
}

最佳答案

查看完整内容[请看2#楼]

如果没有其他更高级的中断的话,会一直停在这个中断里面,停3秒或者抬起。这里这么处理应该是,不用处理别的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1606
金钱
1606
注册时间
2015-6-10
在线时间
223 小时
发表于 2016-11-25 10:53:00 | 显示全部楼层
如果没有其他更高级的中断的话,会一直停在这个中断里面,停3秒或者抬起。这里这么处理应该是,不用处理别的
回复

使用道具 举报

58

主题

359

帖子

0

精华

高级会员

Rank: 4

积分
987
金钱
987
注册时间
2014-9-29
在线时间
261 小时
发表于 2016-11-25 10:57:09 | 显示全部楼层
。。。。。。。
为毛中断里面要搞这么长3ms都长了,别说3S

再者,你这个delay_ms能用吗
回复

使用道具 举报

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2016-11-7
在线时间
39 小时
 楼主| 发表于 2016-11-25 11:14:21 | 显示全部楼层
闪电之舞 发表于 2016-11-25 10:57
。。。。。。。
为毛中断里面要搞这么长3ms都长了,别说3S

不是的这个是正点原子里面的库函数代码,有点搞不懂,就想问一下他这么写是怎么实现的呀
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13135
金钱
13135
注册时间
2012-11-26
在线时间
3814 小时
发表于 2016-11-25 11:15:11 | 显示全部楼层
no zuo no die。。。。
回复

使用道具 举报

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2016-11-7
在线时间
39 小时
 楼主| 发表于 2016-11-25 11:17:19 | 显示全部楼层
jermy_z 发表于 2016-11-25 11:15
no zuo no die。。。。

可以讲解一下吗
回复

使用道具 举报

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2016-11-7
在线时间
39 小时
 楼主| 发表于 2016-11-25 11:22:33 | 显示全部楼层
这里可以改成下降沿触发吗
回复

使用道具 举报

4

主题

346

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3657
金钱
3657
注册时间
2016-2-21
在线时间
542 小时
发表于 2016-11-25 11:52:03 | 显示全部楼层
在中断里延时这么长的时间,你的程序完蛋了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 08:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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