欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4305|回復: 0
收起左側

關于STM32 st_link串口通信調試,中斷接收到了數據但是無法發送

[復制鏈接]
ID:424805 發表于 2019-4-1 15:06 | 顯示全部樓層 |閱讀模式
  我在用st_link 在線調試時,串口中斷接收到了數據,但是在main函數while里一直來回循環,發送不了。我退出調試,串口正常接收發送。這是怎么回事?
main:
while(1)
{
  if(USART_RX_STA&0x8000)
  {        
   len=USART_RX_STA&0x3fff;//得到此次接收到的數據長度
   printf("\r\n您發送的消息為:\r\n\r\n");
   for(t=0;t<len;t++)
   {
    USART_SendData(UART4, USART_RX_BUF[t]);//向串口4發送數據
    printf("\n");
    PCout(6)=1;
   // while(USART_GetFlagStatus(UART4,USART_FLAG_TC)!=SET);//等待發送結束
   }
   printf("\r\n\r\n");//插入換行
   USART_RX_STA=0;
  }


void UART4_IRQHandler(void)                 //串口4中斷服務程序

{
u8 Res;
#if SYSTEM_SUPPORT_OS   //如果SYSTEM_SUPPORT_OS為真,則需要支持OS.
OSIntEnter();   
#endif
if(USART_GetITStatus(UART4, USART_IT_RXNE) != RESET)  //接收中斷(接收到的數據必須是0x0d 0x0a結尾)
  {
  //Res =USART_ReceiveData(UART4); //讀取接收到的數據
  
  if((USART_RX_STA&0x8000)==0)//接收未完成
   {
    Res =USART_ReceiveData(UART4);
    //printf("%x\n",Res);
   if(USART_RX_STA&0x4000)//接收到了0x0d
    {
  if(Res!=0x0a)USART_RX_STA=0;//接收錯誤,重新開始

    else USART_RX_STA|=0x8000; //接收完成了
    }
   else //還沒收到0X0D
    {
    if(Res==0x0d)USART_RX_STA|=0x4000;
    else
     {
     USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
     USART_RX_STA++;
     if(USART_RX_STA>(USART_REC_LEN))USART_RX_STA=0;//接收數據錯誤,重新開始接收   
     }   
    }
   }      
     }
#if SYSTEM_SUPPORT_OS  //如果SYSTEM_SUPPORT_OS為真,則需要支持OS.
OSIntExit();              
#endif
}

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表