打印
[ZLG-ARM]

LPC2368的UART2、UART3与UART0、UART1有什么区别?

[复制链接]
3601|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
z_bing|  楼主 | 2007-3-28 13:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
同样的处理方法UART0、UART1正常,UART2、UART3死机,下面是那段程序:
#include <LPC23xx.h>
#define CR     0x0D
void Delay(unsigned int cnt)
{
    do
    {
        cnt--;
    }
    while(cnt!=0);
}
int sendchar0 (int ch)  
{
  if (ch == '\n')  {
    while (!(U0LSR & 0x20));
    U0THR = CR;                          /* output CR */
  }
  while (!(U0LSR & 0x20));
  return (U0THR = ch);
}
int sendchar1 (int ch)  
{
  if (ch == '\n')  {
    while (!(U1LSR & 0x20));
    U1THR = CR;                          /* output CR */
  }
  while (!(U1LSR & 0x20));
  return (U1THR = ch);
}
int sendchar2 (int ch)  
{
  if (ch == '\n')  {
    while (!(U2LSR & 0x20));
    U2THR = CR;                          /* output CR */
  }
  while (!(U2LSR & 0x20));
  return (U2THR = ch);
}

int sendchar3 (int ch)  
{
  if (ch == '\n')  {
    while (!(U3LSR & 0x20));
    U3THR = CR;                          /* output CR */
  }
  while (!(U3LSR & 0x20));
  return (U3THR = ch);
}main()
{
    PINSEL0 |= 0x00000050;               // Enable TxD0 and RxD0
    PINSEL4 |= 0x0000000A;               // Enable RxD1 and TXD0
    PINSEL0 |= 0x00500000;                 // Enable TXD2 and RXD2
    PINSEL9 |= 0x0F000000;                 // Enable TXD3 and RXD3
    PINSEL10 = 0;

  U0FDR    = 0;                          
  U0LCR    = 0x83;                     
  U0DLL    = 16;                    
  U0DLM    = 0;                    
  U0LCR    = 0x03;                    

  U1FDR    = 0;                        
  U1LCR    = 0x83;                      
  U1DLL    = 16;                
  U1DLM    = 0;                 
  U1LCR    = 0x03;              

  U2FDR    = 0;                      
  U2LCR    = 0x83;                       
  U2DLL    = 16;                       
  U2DLM    = 0;                    
  U2LCR    = 0x03;              

  U3FDR    = 0;                    
  U3LCR    = 0x83;               
  U3DLL    = 16;                
  U3DLM    = 0;                
  U3LCR    = 0x03;                  
  while(1)
  {
      sendchar0(0x55);
      sendchar1(0x55);
      sendchar3(0x55);
      Delay(10000);
  }
}

相关帖子

沙发
zlgARM| | 2007-3-29 08:31 | 只看该作者

z_bing

    记得在PCONP里打开UART3和UART2。默认情况下,UART3、2是关闭的。

使用特权

评论回复
板凳
z_bing|  楼主 | 2007-3-29 13:45 | 只看该作者

谢谢zlgARM的指点,打开PCONP就好了。

使用特权

评论回复
地板
jinbos| | 2007-6-18 11:34 | 只看该作者

学习

看来还是要用的的外设不管默认情况是开不头,初始化时还是重新设一下的好

使用特权

评论回复
5
z_bing|  楼主 | 2007-6-19 11:11 | 只看该作者

jinbos说的对,初始化时该开的开该关的关是个比较好的习惯

使用特权

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

本版积分规则

5

主题

13

帖子

0

粉丝