微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > LPC2294串口程序求助

LPC2294串口程序求助

时间:10-02 整理:3721RD 点击:
LPC2294的P0.1和P0.0作为串口接收单片机发来的按键值keynum(0x01,0x02......),不知道程序哪里有问题,1)单片机发出来的数据用串口调试助手可以收到,为什么ARM收不到,2)还有就是U0FCR 设置为触发点为1个字节对不对,按键值在单片机定义的是char型?3)单片机发给串口调试助手比如10是0A,11是0B,那么ARM接收到也是这样吗?由于才接触ARM希望指导下。
void UART0_Ini(uint32 baud)
{  
        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;
        uart0=1;
         if( (U0IIR&0x0F)==0x04)       
         {//接收字节数达到接收FIFO中的出发点(RDA)中断
       
                 keynum = U0RBR;
         }
         else
         {//接收超时(CTI)中断
                 U0FCR=0XC3;                                //bit2 = 1,清空UARTn接收FIFO,并使指针逻辑复位
         }
         VICVectAddr = 0x00;                // 中断处理结束
}

band为9600,单片机也是9600

从你的描述上看,问题出在LPC2294上,解决办法:1、检查UART初始化是否正确(参考手册,例程)2、让LPC2294这边串口接收到什么原样发送出去,通过串口助手看数据是否正确3、还可以在线调试,串口中断里设置断点,观察下变量是否正确

你好,不知道你的问题解决了吗。我最近刚刚入手lpc2194,却苦于一直找不到库函数或示例程序,您那能把你用的程序或库函数给我发一份吗?
  不胜感激!
qq:597436250

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top