stm32串口中断如何让在while(1)死循环里的跑马灯停止后执行另一个程序

2019-07-20 16:29发布


主函数:u8 flag;
int main(void)
{
        u8 Tx_Buf[8];
        u8 t;
        u8 len;        
        u16 times=0;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÏμí3ÖD¶ÏóÅÏ輶·Ö×é2
        delay_init(168);    //3õê¼»ˉÑóê±oˉêy
        uart_init(115200);         //′®¿ú3õê¼»ˉ
        LED_Init();                                  //3õê¼»ˉLED¶Ë¿ú  
        BEEP_Init();        //3õê¼»ˉ·äÃùÆ÷¶Ë¿ú
        EXTIX_Init();       //3õê¼»ˉía2¿ÖD¶Ïêäèë
  KEY_Init();        
        
        while(1)
        {
               
        if(flag ==1)
        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;
        
        }
                        
        else if(flag==2)
        {
                LED3=1;
                LED7=0;
                LED13=0;
                LED2=0;}}}


串口中断函数:
extern u8 flag;

void USART1_IRQHandler(void)                        
{
        u8 Res;
#if SYSTEM_SUPPORT_OS                 
        OSIntEnter();   
#endif
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
        {
                Res =USART_ReceiveData(USART1);//(USART1->DR);        
               
                if((USART_RX_STA&0x8000)==0)
                {if(Res==1) flag =1;
                else if (Res==2) flag =2;
                else flag =0;
                return ;
                }                    

  }
#if SYSTEM_SUPPORT_OS         
        OSIntExit();                                                                                          
#endif
}
#endif        


       您好 ,我问一下 ,我这是想用串口中断  发送字符1  然后跑马灯    之后就不能发送字符2了  一直在跑马灯while死循环里了    这起不到我中断的效果呀
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
xuyan021
1楼-- · 2019-07-21 16:29
这个根据需要写,在大循环里加条件就可以。
Da Wen
2楼-- · 2019-07-21 21:17
1009127284 发表于 2017-3-4 18:06
你这个我也试了  还是一样的    这跟外部中断的效果不一样呀  应该是在跑马灯的时候 发送字符2就会停止  ...

单步走一下看看你的flag有没有变化

一周热门 更多>