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

[复制链接]
 楼主| 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

13

主题

55

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:专业DTU/RTU开发,上位机开发 hycorp.taobao.com

13

主题

55

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部