各位,我写了个UART程序,很简单。目的是想向串口不断的发送固定的数据,代码如下:
#define rULCON0 (*(volatile unsigned *)0x50000000) //UART0线控制寄存器,规定数据传输的格式
#define rUCON0 (*(volatile unsigned *)0x50000004) //UART0控制寄存器
#define rUTRSTAT0 (*(volatile unsigned *)0x50000010) //UART0状态寄存器
#define rUBRDIV0 (*(volatile unsigned *)0x50000028) //UART0波特率寄存器
#define rUTXH0 (*(volatile unsigned *)0x50000020) //UART0发送数据寄存器
#define rURXH0 (*(volatile unsigned *)0x50000024) //UART0接收数据寄存器
int send_delay()
{
int time=50000;
for(;time>0;time--)
return 0;
}
int wait_delay()
{
int time=500000;
for(;time>0;time--);
return 0;
}
int main()
{
char data[10]="123456789";
int count=0;
rULCON0&=0xffffff00;
rULCON0=0x03; //每帧数据格式设为8位数据位,1位停止位,无奇偶校验位
rUCON0=0x0805; //发送接收为查询模式, 串口时钟为PCLK(50MHZ)
rUBRDIV0=0x1a; //波特率BR设为115200bps int(PCLK/(BR*16))-1=26
while(1)
{
while(data[count]!='\0')
{
rUTXH0=(( unsigned long)data[count++]);
send_delay();
}
wait_delay();
}
return 0;
}
程序编译调试环境是ADS,编译测试通过!但是通过DNW用USB下载到板子(忧龙s3c24402440)下运行的时候显示SWI exception!!!
各位谁能帮我解决下呢,或是发给我个类似的代码呢!
谢谢了!
弄了几天都没有弄出来,都要打击我继续学习的信心了!
------解决方案--------------------
SWI exception!!!
只能说明产生了SWI异常,SWI是软件中断向量,SWI异常处理是CPU执行SWI指令时使用。这通常是用来实现OS的系统调用机制。
楼主可以打电话给厂家的技术支持试试,我觉得不是程序本身的问题。
而是你Down的方式或者位置不对。
可以把板子中的系统擦掉,完全来测试裸机程序。