OpenEdv-开源电子网

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

我的按键中断无效,请大神帮忙

[复制链接]

8

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2016-3-11
在线时间
47 小时
发表于 2016-3-29 10:08:21 | 显示全部楼层 |阅读模式
5金钱
void EXTI0_IRQHandler(void)
{
  delay_ms(10);    //消抖
        if(WK_UP==1)
        {          
                LED0=!LED0;
                LED1=!LED1;       
        }
        EXTI_ClearITPendingBit(EXTI_Line0);  //清除EXTI0线路挂起位
}
void EXTI9_5_IRQHandler(void)
{                       
        delay_ms(10);        //消抖       

        if(KEY0==0)        {

            foreward();

        }
         EXTI_ClearITPendingBit(EXTI_Line5);    //清除LINE5上的中断标志位  
}


void EXTI15_10_IRQHandler(void)
{
  delay_ms(10);    //消抖                         
  if(KEY1==0)       
        {

              rollback();
        }
         EXTI_ClearITPendingBit(EXTI_Line15);  //清除LINE15线路挂起位
}




void foreward(void)//正转函数
{
u16     led0pwmval;
u16            led1pwmval;
        while(1)
        {
        delay_ms(10);
     led0pwmval=500;
     TIM_SetCompare1(TIM3,led0pwmval);

         led1pwmval=899;
     TIM_SetCompare1(TIM3,led1pwmval);

        }
}

void rollback(void)//反转函数
{
        u16     led0pwmval;
u16         led1pwmval;
                while(1)
        {
        delay_ms(10);
     led0pwmval=899;
     TIM_SetCompare1(TIM3,led0pwmval);
         led1pwmval=300;
     TIM_SetCompare1(TIM3,led1pwmval);
        }
}

有懂的不

最佳答案

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

使用道具 举报

8

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2016-3-11
在线时间
47 小时
 楼主| 发表于 2016-3-29 10:08:22 | 显示全部楼层
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2016-3-29 10:09:29 | 显示全部楼层
中断里调用死循环  也真是醉了
回复

使用道具 举报

8

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2016-3-11
在线时间
47 小时
 楼主| 发表于 2016-3-29 10:12:15 | 显示全部楼层
jermy_z 发表于 2016-3-29 10:09
中断里调用死循环  也真是醉了

可是就连死循环也进不去
回复

使用道具 举报

12

主题

336

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1576
金钱
1576
注册时间
2015-8-9
在线时间
625 小时
发表于 2016-3-29 10:13:03 | 显示全部楼层
中断服务函数里面能用while(1)的吗??
回复

使用道具 举报

8

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2016-3-11
在线时间
47 小时
 楼主| 发表于 2016-3-29 10:32:52 | 显示全部楼层
Akatsuki_lim 发表于 2016-3-29 10:13
中断服务函数里面能用while(1)的吗??

是可以使用循环的,关键是要把死的变活
回复

使用道具 举报

12

主题

336

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1576
金钱
1576
注册时间
2015-8-9
在线时间
625 小时
发表于 2016-3-29 10:45:12 | 显示全部楼层
031441229 发表于 2016-3-29 10:32
是可以使用循环的,关键是要把死的变活

请楼主说说是如何变活的
回复

使用道具 举报

21

主题

144

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1132
金钱
1132
注册时间
2015-7-31
在线时间
155 小时
发表于 2016-4-1 16:04:16 | 显示全部楼层
理论上中断里什么都可以写,但是要考虑实际啊,所以得出的结论就是,中断里最好不要用死循环以及阻塞延时,中断里能不干活就不干,中断时间长了是作死的行为
回复

使用道具 举报

8

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2016-3-11
在线时间
47 小时
 楼主| 发表于 2016-4-1 18:53:19 | 显示全部楼层
谢谢指教已经改正
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 14:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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