打印

s3c44b0串口实验中的问题

[复制链接]
1598|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
想学ARM|  楼主 | 2009-8-18 12:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用AXD调试,只能在超级终端上显示空格,不能显示我程序中的字符,这是为什么啊?程序如下。波特率终端和板子都是115200,无奇偶校验位,数据位8,停止位1,没有硬件流控制。我是新手,上网找了半天没找到问题所在,希望大家帮我看看,谢谢了。
【功能说明】系统主函数
****************************************************************************/
static int UartNum=0;
void myUart_Init(int whichuart, int baud)//对Uart进行初始化,以所需要的波特率为输入参数
{
   if(whichuart==0)
   {
        UartNum=0;
        rUFCON0=0x0;    //不使用FIFO
        rUMCON0=0x0;   //不使用自动流控制
        rULCON0=0x3;   //不采用红外线传输模式,无奇偶校验位,1个停止位,8个数据位
        rUCON0=0x245;   //发送中断为电平方式,接收中断为边沿方式,禁止超时中断,允许产生错误状态中断,禁止回送模式,禁止中止信号,传输模式为中断请求模式,接收模式也为中断请求模式。
        rUBRDIV0 = ( (int)(MCLK/16./baud + 0.5) -1 ); //根据波特率计算UBRDIV0的值
    }
    else if(whichuart==1)
    {
        UartNum=1;
        rUFCON1=0x0;     
        rUMCON1=0x0;   
        rULCON1=0x3;  
        rUCON1=0x245;  
        rUBRDIV1 = ( (int)(MCLK/16./baud + 0.5) -1 );
    }
}

void myUart_SendByte(char ch)
{
if (UartNum ==0)
    {
if(ch=='\n')
{
    while(!(rUTRSTAT0 & 0x2));//等待,直到发送缓冲区为空
    Delay(10); //超级中断的响应速度较慢  
    WrUTXH0('\r');//发送回车符
}
while(!(rUTRSTAT0 & 0x2)); //等待,直到发送缓冲区为空
Delay(10);
WrUTXH0(ch);//发送字符
    }
else
    {
if(ch=='\n')
    {
    while(!(rUTRSTAT1 & 0x2));
    Delay(10); //because the slow response of hyper_terminal  
    rUTXH1='\r';
    }
    while(!(rUTRSTAT1 & 0x2));  //Wait until THR is empty.
   Delay(10);
    WrUTXH1(ch);
    }
}


void myUart_Send (char *str)
{
    myUart_Init(0,115200);
while (*str)
  myUart_SendByte(*str++);
}


void Main(void)
{
char *temp="i can";
Port_Init();
Led_Display(0xf);
//Beep(0x1);
myUart_Send(temp);

Led_Display(0x0);
    while(1);

}

相关帖子

沙发
阿南| | 2009-8-18 20:49 | 只看该作者
1。换一个串口终端试试
2。如果有示波器直接测试一下TXD波形
3。调试一下功能函数myUart_Send(temp)等,也可直接用官方的库函数测试一下。

使用特权

评论回复
板凳
想学ARM|  楼主 | 2009-8-18 22:33 | 只看该作者
谢谢阿南,每次都是你耐心的回答问题。找到错误了,是MCLK没有设置好。 2# 阿南

使用特权

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

本版积分规则

5

主题

15

帖子

0

粉丝