初级会员 
  
	- 积分
 - 133
 
        - 金钱
 - 133 
 
       - 注册时间
 - 2013-12-21
 
      - 在线时间
 - 8 小时
 
 
 
 | 
 
10金钱 
最近做项目用stm32H743IIT6采用串口中断方式和迪文串口屏进行通信,串口程序是移植官网例程,和屏幕通信的时候经常串口接收中断经常卡死,程序没有跑飞,主程序正常运行,就是串口中断再也进不去了。哪位大神给看看,最好@原子哥给解答下 
void USART2_IRQHandler(void)                         
{  
        u8 Res; 
#if SYSTEM_SUPPORT_OS                 //使用OS 
        OSIntEnter();     
#endif 
        if((__HAL_UART_GET_FLAG(&UART2_Handler,UART_FLAG_RXNE)!=RESET))  //接收到数据 
        { 
        HAL_UART_Receive(&UART2_Handler,&Res,1,1000); 
                     USART2_RX_BUF[Uart2RxCount++]=Res ; 
                    if(Readtime==1)  Uart2frame=15;  //接收时间参数 
                    else Uart2frame=9;  //普通LCD指令 
                    if(USART2_RX_BUF[0]==0x5A) 
                                { 
                                        if(Uart2RxCount==(USART2_RX_BUF[2]+3)) //接收完毕(USART2_RX_BUF[2]+3) 
                                        { 
                                                 if(Uart2RxCount==6)  //应答指令 
                                                 { 
                                                         Uart2RxCount=0; 
//                                                         Beep(10); 
                                                 } 
                                                 else{ 
                                                        Usartflag|=0x02; //bit1置1 
                                                        Uart2RxCount=0; 
                                      Beep(10); 
                                                 } 
                                        } 
                         } 
                         else Uart2RxCount=0; 
                         if(Uart2frame==15)              //接收完一组13帧数据 
                  { 
        if((USART2_RX_BUF[5]==0x10)&&(USART2_RX_BUF[6]==0x04))   //接收到时钟数据 
                                { 
                                        if((Usartflag&0x02)>>1) 
                                        { 
                                                 Usartflag&=0xFD; //清标志位 
                                                 timeack=1; 
                                                 year=USART2_RX_BUF[7]; 
                                                 month=USART2_RX_BUF[8]; 
                                                 day=USART2_RX_BUF[9]; 
                                                 hour=USART2_RX_BUF[11]; 
                                                 minute=USART2_RX_BUF[12]; 
                                                 second=USART2_RX_BUF[13]; 
                                        } 
                                } 
                  }         
        } 
        HAL_UART_IRQHandler(&UART2_Handler);         
#if SYSTEM_SUPPORT_OS                 //使用OS 
        OSIntExit();                                                                                            
#endif 
}  
 
 |   
 
 
 
 
 
 |