打印

LPC2294串口程序需要咨询下。

[复制链接]
1086|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mierto|  楼主 | 2014-8-18 16:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
LPC2294的P0.1和P0.0作为串口接收单片机发来的按键值(0x01,0x02......),不知道程序哪里有问题,单片机发出来的数据用串口调试助手可以收到,为什么ARM收不到,还有就是U0FCR 设置为触发点为1个字节对不对?按键值在单片机定义的是char型。
void UART0_Ini(uint32 baud)   baud为9600
{  
        uint32  bak;
           PINSEL0 = PINSEL0 | 0x00000005;        //使用P0.0-TXD(UART0)和P0.1-RXT(UART0)
           U0LCR = 0x83;                        // DLAB位置1
           bak = (Fpclk >> 4) / baud;
           U0DLM = bak >> 8;
           U0DLL = bak&0xff;
   
           U0LCR = 0x03;                        //字长选择8bit,清DLAB,无奇偶校验;
           U0FCR = 0x01;                        // 使能FIFO,设置触发点为1字节,并复位RXFIFO
           U0IER = 0x01;                        // 允许RBR中断,即接收中断
   
    //设置中断允许
           VICIntSelect = 0x00000000;           // 设置所有通道为IRQ中断
          VICVectCntl1 = 0x26;                 // UART0中断通道分配到IRQ slot 1,即优先级second
           VICVectAddr1 = (uint32)IRQ_UART0;    // 设置UART1向量地址
           VICIntEnable = (1<<6);           // 使能UART0中断
}
void   __irq IRQ_UART0(void)
{  
        uint8 i;
        // IO0SET=(0X00000001<<23);
        uart0=1;
         if( (U0IIR&0x0F)==0x04)       
         {//接收字节数达到接收FIFO中的出发点(RDA)中断
                 /*for(i=0;i<14;i++)
                 {
                         uart0_buf[i]=U0RBR;   // 读取FIFO的数据,并清除中断标志
                 }*/
                 keynum = U0RBR;
         }
         else
         {//接收超时(CTI)中断
                 U0FCR=0XC3;                                //bit2 = 1,清空UARTn接收FIFO,并使指针逻辑复位
         }
         VICVectAddr = 0x00;                // 中断处理结束
}

相关帖子

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

本版积分规则

2

主题

3

帖子

0

粉丝