请问为什么我串口发送数据它不会进入中断呢

2019-08-19 20:09发布

[mw_shl_code=c,true]void MP3Con(unsigned char n)
{
        int i;
        unsigned int MP3play[5] = {0xfd,0x02,0x01,0xdf};
        unsigned int MP3plause[5]= {0xfd,0x02,0x02,0xdf};
        if(1==n)
        {
                for(i=0;i<4;i++)
                {
                        USART_SendData(USART2,MP3play);
                        while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
                               
                }
        }
        if(2==n)
        {
                for(i=0;i<4;i++)
                {
                  USART_SendData(USART2,MP3plause);
                  while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
                }
        }
}[/mw_shl_code]
这是发送数据的函数,1和2分别对应两种控制mp3的.
[mw_shl_code=c,true]void USART2_IRQHandler(void)  
{  
  //u8 RX_dat;  
   
  if(USART_GetITStatus(USART2,USART_IT_TXE)==SET)//USART_IT_RXNE:
  {   
    USART_ClearITPendingBit(USART2,USART_IT_TXE);  
   // RX_dat=USART_ReceiveData(USART2);
    //USART_SendData(USART2,RX_dat);     
    while(USART_GetFlagStatus(USART2,USART_FLAG_TXE) == RESET)
                  {
                                LED1_ONOFF(Bit_RESET);
                                Delay_ms(1000);
                                LED1_ONOFF(Bit_SET);
                                Delay_ms(1000);
                        }  //
    GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);  
  }     
}  [/mw_shl_code]
这个是中断函数,我用led的闪烁来判断是否进入了中断,可是好像没有进入,然后用逻辑分析仪检测TXD口发现有信号传输~~
[mw_shl_code=c,true]  while(1)
  {       
                MP3Con(1);
                LED1_ONOFF(Bit_RESET);
                Delay_ms(1000);
                MP3Con(2);
                LED1_ONOFF(Bit_SET);
                Delay_ms(1000);
  }                [/mw_shl_code]
这是主函数里面发送数据的部分

有信号发送的话配置应该没问题吧,可是mp3好像并没有受控制,它的协议就是发MP3Con(1) 过去就开始播放,然后我发现中断函数没有调用,但是 程序又没有卡住,能执行下去(因为while(发送完成)),
才学这个没多久,求大神帮帮我,看一下问题出在哪,谢谢了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。