打印
[M051]

谁做过 nano1xx 的串口中断接收呢

[复制链接]
2004|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tangdengan|  楼主 | 2013-11-2 12:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
uint32_t u32IntStatus,u32delayno;
  
  u32IntStatus = UART0->ISR;
  
   
  if(u32IntStatus & DRVUART_RDAINT)
  {
    /* Get all the input characters */
    while(UART0->ISR & UART_ISR_RDA_IS)
    {
      if(UART0->FSR & UART_FSR_RX_EMPTY_F) /* Check RX empty => failed */       
      {   
        return;
      }
      data = UART0->RBR;             /* Get Data from UART RX  */       
      if( (uint32_t)( 1u + UART0_RX.rx ) != (uint32_t)UART0_RX.tx )
      {
        UART0_RX.Data[ UART0_RX.rx ] = data;
        
        UART0_RX.rx ++;
      }
     // printf("0x%08X uart0 rx:%d tx:%d\r\n",UART0->ISR, UART0_RX.rx, UART0_RX.tx);
    }

这是我的接收,接收数据中断不停地产生,奇怪了

相关帖子

沙发
shaffee| | 2013-11-2 18:42 | 只看该作者
读空了的,我上次也是这样的,加一个限制,我用的是fifo为14
if(UART0->ISR & DRVUART_RDAINT)
  {
    i = 13;//防止读空
    while((UART0->FSR & UART_FSR_RX_EMPTY_F) == 0 && i--)//FIFO 非空
    {
      if(RxLen < UART0_RX_BUF_LEN)
      {
        UART0_RxBuf[RxLen] = UART0->RBR;
        RxLen++;
      }
      else
      {
        tmp = UART0->RBR;//丢弃该数据
      }
    }
  }

使用特权

评论回复
板凳
tangdengan|  楼主 | 2013-11-2 21:38 | 只看该作者
不得行哈,
老是收到0x00,
中断就没有停过

唉。。。。那个库函数用起来别扭得很

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:专业DTU/RTU开发,上位机开发 hycorp.taobao.com

11

主题

46

帖子

0

粉丝