打印
[Cortex-M0技术交流]

LPC1768串口UART2的485发送正常,接收进不了中断

[复制链接]
1770|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
香莲清风|  楼主 | 2014-8-14 23:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 香莲清风 于 2014-8-20 21:30 编辑

void Uart2Init(void)   
{  
    uint16_t usFdiv;                        
    LPC_GPIO1->FIODIR |= ((unsigned int)1 << 31);
    LPC_GPIO1->FIOPIN &=  ~((unsigned int)1<<31);                  /* 485_DIR = 0 */                                 
    LPC_PINCON->PINSEL0 |= (((unsigned int)1<<20)|((unsigned int)1<<22));               
    LPC_SC->PCONP |= (1<<24);                                                                                                        
    usFdiv = (FPCLK / 16) / 2400;                                   
    LPC_UART2->DLM  = usFdiv / 256;
    LPC_UART2->DLL  = usFdiv % 256;
  
    LPC_UART2->LCR  = 0x1b;                                                      
    LPC_UART2->FCR  = 0x07;                                                  
    LPC_UART2->IER  = 0x01;                                                      
    NVIC_EnableIRQ(UART2_IRQn);              /* enable irq in nvic              */  
}  

void Uart2SendByte(int8_t buf)  
{  
        LPC_UART2->THR = buf;
        while (!(LPC_UART2->LSR & 0x20));                 
}  

void uart2SendStr (uint8_t *pucStr, uint32_t ulNum)
{
    uint32_t i;
    LPC_GPIO1->FIOCLR |= ((unsigned int)1 << 31);
    Delay(5);
    for (i = 0; i < ulNum; i++)         
    {                                       
        Uart2SendByte (*pucStr++);
    }
    Delay(5);
    LPC_GPIO1->FIOSET |=  ((unsigned int)1 << 31);
}

void UART2_IRQHandler(void)
{
   while ((LPC_UART2->IIR & 0x01) == 0)                                                                                 
   {                                                                                                   
      switch (LPC_UART2->IIR & 0x0E)                                                                                          
      {                                                         
          case 0x04:                                       
                  for (GulNum = 0; GulNum < 8; GulNum++)               
                  {                 
                   GucRcvBuf[GulNum+RcvLen] = LPC_UART2->RBR;
               }
               break;         
          case 0x0C:                                       
           while ((LPC_UART2->LSR & 0x01) == 0x01)      
           {                                                                                    
                GucRcvBuf[RcvLen] = LPC_UART2->RBR;
          }                                                                                          
          break;
          default:
                break;
        }
    }
}
这是程序部分,不知道有没有大侠遇到过呀

相关帖子

沙发
DLF5| | 2014-8-16 10:12 | 只看该作者
没细看你的程序,我用过接收中断,肯定没问题。

我是用路虎板例程改的,很好用。建议你也试一试!

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
香莲清风 + 1 赞一个!
板凳
香莲清风|  楼主 | 2014-8-20 21:31 | 只看该作者
DLF5 发表于 2014-8-16 10:12
没细看你的程序,我用过接收中断,肯定没问题。

我是用路虎板例程改的,很好用。建议你也试一试! ...

好的,谢谢啊!

使用特权

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

本版积分规则

3

主题

8

帖子

0

粉丝