利用串口中断发送数据,板子一上电就不停的进中断发送数据

2019-07-20 22:45发布

初始化部分
USART_ITConfig(USART1, USART_IT_TC, ENABLE);//Tramsimssion Complete后,才产生中断. 开TC中断必须放在这里,否则还是会丢失第一字节
USART_Cmd(USART1, ENABLE);                    //使能串口1
----------------------------------
void USART_SendTime(void)
{
        USART_ClearFlag(USART1, USART_FLAG_TC);                           //清除传输完成标志位,否则可能会丢失第1个字节的数据.  
        USART_SendData(USART1, USART_TX_BUF[USART_TXptr++]);              //向串口1发送数据
}
-----------------------------------
void USART1_IRQHandler(void)                        //串口1中断服务程序
{
          if( USART_GetITStatus(USART1, USART_IT_TC) == SET  )
         {
                 USART_SendData(USART1, USART_TX_T1BUF[USART_TXptr]);      //向串口1发送数据
                USART_TXptr++;
          }
        if(USART_TXptr >=20)                                                         
        {
                USART_ClearFlag(USART1, USART_FLAG_TC);                   //不然TC一直是set, TCIE也是打开的,导致会不停进入中断. clear掉即可,不用关掉TCIE
                USART_TXptr = 0;
        }   
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。