7377|5

82

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

stm32串口收发中断冲突? [复制链接]



stm32 串口收发中断冲突?

我用中断收,中断发。电脑(windows)串口没有发数据时,stm32发过来的串口数据正常。当我向stm32发数据较频繁时,stm32发到电脑上的数据就丢失很多,而且,有一个字节数据还是电脑发过去的,难道是usart->rdr,
usart->tdr是公用的?请问这是什么原因。光是收,或者光是发的时候都正常。下面是中断服务程序

void USART_IRQHandler(int  n)
{

   if(USART_GetFlagStatus(coms[n-1].com,USART_FLAG_ORE)==SET)
   {
      USART_ClearFlag(coms[n-1].com,USART_FLAG_ORE); //读SR其实就是清除标志
      USART_ReceiveData(coms[n-1].com);    //读DR
   }  
         
  if(USART_GetITStatus(coms[n-1].com, USART_IT_RXNE) != RESET)
  {
    /* Read one byte from the receive data register */
    coms[n-1].RxBuffer[coms[n-1].RxTail] = (USART_ReceiveData(coms[n-1].com) & 0xFF);  
               
    coms[n-1].RxTail=(coms[n-1].RxTail+1)&RxBufferSize;
    /* Clear the USART1 Receive interrupt */
    USART_ClearITPendingBit(coms[n-1].com, USART_IT_RXNE);

  }

  if(USART_GetITStatus(coms[n-1].com, USART_IT_TXE) != RESET)
  {   
    /* Write one byte to the transmit data register */
          if(coms[n-1].TxHead!=coms[n-1].TxTail)
          {
                  USART_SendData(coms[n-1].com, coms[n-1].TxBuffer[coms[n-1].TxHead]);  
                  coms[n-1].TxHead = (coms[n-1].TxHead+1)&TxBufferSize;        
  
                  /* Clear the USART transmit interrupt */
                  USART_ClearITPendingBit(coms[n-1].com, USART_IT_TXE);
          }

    else
    {
      /* Disable the USART Transmit interrupt */
      USART_ITConfig(coms[n-1].com, USART_IT_TXE, DISABLE);
     
      
    }   
  }  


}
此帖出自stm32/stm8论坛

最新回复

                                 用DMA怎么会丢失呢  详情 回复 发表于 2010-12-7 14:17
点赞 关注
 

回复
举报

63

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 顶一下,版主有空吗?
此帖出自stm32/stm8论坛
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 顶起来,帮帮我这个初学者
此帖出自stm32/stm8论坛
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 usart->rdr,usart->tdr从逻辑层是一个地址,实际物理层面来讲为两个寄存器。数据丢失原因很多,串口助手也有可能会丢数据。
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
                                 顶,我在同时收发时,发现串口助手收到的数据有时并非我发的数据,
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 用DMA怎么会丢失呢
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表