dfx2010 发表于 2010-7-20 21:07:30

FL2440的串口实验问题

本帖最后由 dfx2010 于 2010-7-20 21:09 编辑

FL2440开发板,在做ADS基础实验的《实验七 串行口实验》时没得到预期结果,在dnw中敲入字符无反应。
程序代码如下:#define ULCON0   (*(volatile unsigned *)0X50000000)   //UART线控制寄存器
#define UCON0   (*(volatile unsigned *)0X50000004)   //UART控制寄存器
#define UFCON0      (*(volatile unsigned *)0X50000008)      //FIFO控制寄存器
#define UTRSTAT0      (*(volatile unsigned *)0X50000010)      //UART状态寄存器
#define UBRDIV0      (*(volatile unsigned *)0X50000028)   //波特率
#define UTXH0      (*(volatile unsigned *)0X50000020)
#define URXH0      (*(volatile unsigned *)0X50000024)
#define GPBDAT      (*(volatile unsigned *)0X58000054)

int TSmain()
{
        char buf;
       
        ULCON0 &=0XFFFFFF00;
        ULCON0 |=0X03;         //1位起始位,8位数据位
        UCON0=0X0805;          //串口时钟PCLK,查询方式
        UBRDIV0 =0X1A;         //波特率115200
        while(1)
        {
                if(UTRSTAT0 & 0X01)//接收是否完毕 =1结束
                {
                        buf=URXH0;       //读取数据
                        while(!(UTRSTAT0 & 0X04));//是否允许发送 =1允许

                        UTXH0=buf;
                       
                }
        }
       
        return 0;
}

调试时发现在if(UTRSTAT0 & 0X01)这里不动了,程序一直在等待接收。不知道有没有人也出现这种情况,怎么解决呢?

本人是刚学嵌入式开发的菜鸟,请各位指教。

飞凌-seventeen 发表于 2010-7-22 11:02:54

首先确保一下硬件上没有问题,方法:直接启动开发板,看串口是否有输出,开发板是否接受键盘数据,如果输入输出都没问题,那么硬件上就没有问题了。
其次,要让开发板不要启动系统,这要注意下你的薄码开关以及启动参数
最后,以上都没问题的话,应该是设置上有问题(程序本身没有问题),设置的时候多注意一下ro base 这个值你改成0试一下

gaojj 发表于 2011-4-3 14:18:13

页: [1]
查看完整版本: FL2440的串口实验问题