2956|2

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

LPC2138 的 UART1 不能初始化 [复制链接]

int8 UART1_Init(uint32 baud,uint8 datab,uint8 stopb,uint8 parity)
{
        uint32 tmp;

        PINSEL0  = (PINSEL0 & 0xfff0ffff) | 0x50000;   // (先清零,再赋值) P0.8 、.P0.9  
        PINSEL2  = (PINSEL2 & (~0x08));                  //P1.24 为 GPIO
        IO1DIR  |= (1<<24);                 //P1.24为输出口

        if ((baud==0) || (baud>115200)) return 0;
        if ((datab<5)  || (datab>8))    return 0;
        if ((stopb==0)|| (stopb>2))     return 0;
        if (parity>4)                   return 0;

        U1LCR   = 0x80;                                    // Enable access to Divisor Latches
        tmp       = (Fpclk >> 4) / baud;
        U1DLM   = tmp >> 8;
        U1DLL    = tmp & 0xFF;

        tmp = datab - 5;                       // 设置字长
        if (stopb==2) tmp |= 0x04;             // 设置停止位

        if (parity!=0)                        // 设置奇偶校验位
        {
                parity--;
                tmp |= 0x08;
        }

        tmp |= parity << 4;

        U1LCR = tmp;

        U1FCR = 0x81;                                //使能FIFO,并设置触发点为8字节
        U1IER  = 0x01;                                //允许RBR中断,即接收中断
       
    rcv_new1 = 0;


        return 1;
}

int  main(void)
{  
   
   /* 设置中断允许 */
   VICIntSelect = 0x00000000;           // 设置所有通道为IRQ中断
   VICVectAddr6 = (uint32)Uart1_Handler;
    VICVectCntl6 = (0x20 | 0x07);
    VICIntEnable |= (1 << 0x07);          // 使能UART1
   
   
    VICVectAddr4 = (uint32)Uart0_Handler;
    VICVectCntl4 = (0x20 | 0x06);
    VICIntEnable |= (1 << 0x06);         // 使能UART0
   
   
   UART0_Init(9600, 8, 1, 0);
   UART1_Init(9600, 8, 1, 0);  
   
   while(1)                             // 等待中断
   {
     if(1==rcv_new0)
     {
        UART0_SendStr("\r\n123456789!!!\r\n");                    // 将接收到的数据发送回主机
        rcv_new0 = 0;  
     }

      if(1==rcv_new1)
     {
        UART1_SendStr("\r\n567891234!!!\r\n");                    // 将接收到的数据发送回主机
        rcv_new1 = 0;  
     }
     
     
   }
   return(0);
}

------------------------------------------------------------------------------------------

'UART1_Init(9600,8,1,0);'   这句话加上的话 ,UART0就收不到 数据了.   没有这句,一切正常.
能看看上面的代码吗?

最新回复

中断表里,对应的中断开了没?   详情 回复 发表于 2008-1-2 09:44
点赞 关注

回复
举报

95

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
不用UART0,只用UART1.  程序也不运行.
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
中断表里,对应的中断开了没?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表