关于串口收发错误

2019-10-15 00:27发布

void USART1_IRQHandler(void)                                                                            //′®¿ú1ÖD¶Ï′|àíoˉêy
{
  unsigned int i;
  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)                                //¼ì2aêÇ·ñêǽóêÕÖD¶Ï
  {       
    /* Read one byte from the receive data register */
    RxBuffer[RxCounter++] = USART_ReceiveData(USART1);                                //½óêÕò»×Ö½úêy¾Y
    if(RxCounter == DataSizeOfReceiver)                                                                //èç1û½óêÕêy¾Yá¿μèóú×üêy¾Yá¿
    {                                          
          for(i=0; i< RxCounter; i++) TxBuffer[i]=RxBuffer[i];                         //&#189;&#171;&#189;óê&#213;μ&#189;μ&#196;êy&#190;Y×a′&#230;μ&#189;·¢&#203;íêy×é
          RxCounter=0;                                                                                                        //&#189;óê&#213;&#188;&#198;êy&#198;÷&#199;&#229;á&#227;
             USART_ITConfig(USART1, USART_IT_TXE, ENABLE);                                        //′ò&#191;a′&#174;&#191;ú1·¢&#203;í&#214;D&#182;&#207;£&#172;′ò&#191;aoó&#187;áá¢&#188;′&#214;′DD&#214;D&#182;&#207;·¢&#203;í2ù×÷          
    }

  }

  if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)                           //&#188;ì2aê&#199;·&#241;ê&#199;·¢&#203;í&#214;D&#182;&#207;
  {   
           /* Send one byte */
    USART_SendData(USART1, TxBuffer[TxCounter++]);                                   //·¢&#203;íò&#187;×&#214;&#189;úêy&#190;Y                                                                                                                                          
    if(TxCounter == DataSizeOfTransfer)                                                           //è&#231;1&#251;·¢&#203;íêy&#190;Yá&#191;μèóú×üêy&#190;Yá&#191;
    {                                                                                  
          USART_ITConfig(USART1, USART_IT_TXE, DISABLE);                           //1&#216;±&#213;′&#174;&#191;ú·¢&#203;í&#214;D&#182;&#207;£&#172;í£&#214;1·¢&#203;í
             GPIO_WriteBit(GPIOA, GPIO_Pin_1, (BitAction)(!GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_1)));       
          TxCounter=0;                                                                                                   //·¢&#203;í&#188;&#198;êy&#198;÷&#199;&#229;á&#227;
    }   
  }       
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
arao和xiaomi
1楼-- · 2019-10-15 02:12
求助,就是上面那个是串口收发中断的函数,但是实际在实现的过程中出现了问题,就是通过串口助手发送数据给单片机后,显示的是乱码,求助指正一下这个中间哪里出现了问题?
南有乔木
2楼-- · 2019-10-15 06:34
显示乱码也有可能是晶振 波特率配置不对
arao和xiaomi
3楼-- · 2019-10-15 08:57
南有乔木 发表于 2017-2-21 18:14
显示乱码也有可能是晶振 波特率配置不对

你好,上面那一段程序有没有逻辑错误呀?波特率没问题,因为我查看了一下的
gsndragon
4楼-- · 2019-10-15 11:19
 精彩回答 2  元偷偷看……

一周热门 更多>