初级会员

- 积分
- 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
}
|
|