stm32如何让一个正在执行的跑马灯中断去执行我另一个程序

2019-07-20 16:23发布

我把跑马灯放在主函数里   如下:while(1){                                   key=KEY_Scan(0);       
                                      if(key)
                                  {                                                  
                                   switch(key)
                                  {                               
                                 case 2:       
                                        while(1){       
                                                LED2=1;
                                                delay_ms(500);
                                                LED2=0;
                                                delay_ms(500);
                                                LED3=1;
                                               delay_ms(500);
                                               LED3=0;
                                               delay_ms(500);
                                                LED7=1;
                                               delay_ms(500);
                                                LED7=0;
                                                delay_ms(500);
                                                 LED13=1;
                                                delay_ms(500);
                                                  LED13=0;}

               然后把一盏单独亮的灯放在中断程序里:如下:
                                               void EXTI2_IRQHandler(void)
                                           {
                                        delay_ms(10);       
                                        if(KEY2==0)
                                       {                                 
                                 LED13=0;
                                 LED2=1;
                                 LED3=0;
                                 LED7=0;  
                                              }                 
         EXTI_ClearITPendingBit(EXTI_Line2);}     我想当我按下键2的时候   跑马灯立刻停止 然后执行LED2亮着   (而我现在的程序是跑马灯在运行的时候按下键2并没有停止,一直在运行)这该怎么办
                                                                   求大神回复!!

                               
                               
               
       

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
fankai
1楼-- · 2019-07-20 17:26
你进入外部中断之后,执行完,马上就退出了啊,然后又去执行while了,可以设定一个标志啊,一般情况下执行while,中断过后,改变标志,执行另一部分程序
taizonglai
2楼-- · 2019-07-20 20:23
额,你对中断了解的太少了。中断服务函数执行完成以后就会返回到被中断的代码接着执行!这个过程很快!
我是路人甲
3楼-- · 2019-07-21 01:23
中断里面做个 按键while循环,释放按键再退出中断 就看得见效果了
s8088
4楼-- · 2019-07-21 03:52
 精彩回答 2  元偷偷看……
1009127284
5楼-- · 2019-07-21 09:07
 精彩回答 2  元偷偷看……
1009127284
6楼-- · 2019-07-21 10:51
zuozhongkai 发表于 2017-3-4 11:27
额,你对中断了解的太少了。中断服务函数执行完成以后就会返回到被中断的代码接着执行!这个过程很快!

是呀 我是学stm32没多久  新手

一周热门 更多>