串口中断问题。

2019-07-20 04:24发布

我的串口初始化代码如下:
  USART_InitStruct.BaudRate = 4800;                             
  USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B;           
  USART_InitStruct.StopBits = LL_USART_STOPBITS_1;              
  USART_InitStruct.Parity = LL_USART_PARITY_NONE;               
  USART_InitStruct.TransferDirection = LL_USART_DIRECTION_TX_RX;
  USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE;
  USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16;     
  LL_USART_Init(USART3, &USART_InitStruct);

  LL_USART_ConfigAsyncMode(USART3);                             
       
  LL_USART_EnableDirectionTx(USART3);                           
  LL_USART_EnableDirectionRx(USART3);                           
       
   LL_USART_ClearFlag_TC(USART3);                                 
   LL_USART_EnableIT_RXNE(USART3);                                
   LL_USART_EnableIT_TC(USART3);                                
   LL_USART_DisableIT_TXE(USART3);                                
   LL_USART_Enable(USART3);  

   在串口发送完成中断中,也执行LL_USART_ClearFlag_TC(USART3)。但是不停的触发发送完成中断。
参考手册,TE位复位会导致TC置1,但是我的TE一直是1,除了初始化,在进入发送完成中断时,也通过LL_USART_ClearFlag_TC清除了TC位,但是仍然会不停的触发中断。
我考虑使用查询方式或者发送缓冲器空中断完成工作,仍然想搞明白目前发送失败的原因。
哪位大神能帮忙解决一下。                                   

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