求助:播放音频时,串口接收数据时(中断方式),有时会死机,请教如何解决?谢谢

2019-07-20 08:33发布

本帖最后由 yyh001123 于 2018-4-21 17:12 编辑

音频,采用SAI1 + WM8978。
串口通信,采用中断方式,对方间隔一定时间主动发送几个字节的数据包。
播放音频时,如果对方有数据发送过来,有时会导致本机声音卡顿,甚至可能会死机。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
yyh001123
1楼-- · 2019-07-20 09:46
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-07-20 13:15
检查中断服务函数。
yyh001123
3楼-- · 2019-07-20 14:19
本帖最后由 yyh001123 于 2018-4-22 21:29 编辑
正点原子 发表于 2018-4-22 01:49
检查中断服务函数。

谢谢!
中断服务函数,读取串口寄存器到缓冲区,然后置了一个标志。
代码如下:
void USART1_IRQHandler(void)                        
{        
  if(((USART1->ISR & USART_ISR_RXNE) != RESET) && ((USART1->CR1 & USART_CR1_RXNEIE) != RESET))    //接收到数据
  {         
    USART1_RX_Buf[USART1_RX_Buf_P] = USART1->RDR;                                                                            //将接收到的数据存入缓冲区
    USART1_RX_Buf_P++;      
    USART1_RX_NewByte_Flag = 0x55;                                                                                                        //置串口1接收到新字节标志
  }   
}
一包数据有5个字节。
正点原子
4楼-- · 2019-07-20 19:48
 精彩回答 2  元偷偷看……
清风徐徐
5楼-- · 2019-07-20 20:38
我怎么记得串口中断是需要清中断标志啊,楼主没清啊。
yyh001123
6楼-- · 2019-07-21 00:22
清风徐徐 发表于 2018-4-23 08:22
我怎么记得串口中断是需要清中断标志啊,楼主没清啊。

不需要手动清也可以的。
数据收发都正常的,主要是接收中断影响了声音的播放。

一周热门 更多>