一、实验平台:开发板fs2410,采用三星s3c2410的cpu,无操作系统。
二、实现功能:驱动uart0,将pc机输入的字符再回送到pc机
三、实验原理:
串口将并行数据经过移位寄存器变成比特流,达到串口传输的目的。
四、实验现象:
五、实验总结:
用putty工具与arm开发板进行交互,要注意回显的问题,同时还要注意回车、换行在不同机器下是有区别的。
六、示例代码:
/*uart0.c*/
#define ULCON0 (*(volatile unsigned long *)0x50000000)
#define UCON0 (*(volatile unsigned long *)0x50000004)
#define UFCON0 (*(volatile unsigned long *)0x50000008)
#define UMCON0 (*(volatile unsigned long *)0x5000000C)
#define UTRSTAT0 (*(volatile unsigned long *)0x50000010)
#define UTXH0 (*(volatile unsigned long *)0x50000020)
#define URXH0 (*(volatile unsigned long *)0x50000024)
#define UBRDIV0 (*(volatile unsigned long *)0x50000028)
#define GPHCON (*(volatile unsigned long *)0x56000070)
#define GPHDAT (*(volatile unsigned long *)0x56000074)
#define GPHUP (*(volatile unsigned long *)0x56000078)
#define GPH2_out (1<<5)
#define GPH3_in (1<<7)
void putc(char ch)
{
while(!(UTRSTAT0 & 0X2));
UTXH0 = ch;
}
char getc(void)
{
while(!(UTRSTAT0 & 0X1));
return URXH0;
}
void putstr(char *str)
{
while(*str != '\0'){
if(*str == '\n'){
putc('\n');
putc('\r');
}
else
putc(*str);
str++;
}
}
int main(void)
{
GPHCON = GPH2_out|GPH3_in; //引脚设为TXD0,RXD0
GPHUP = 0X0C;
UFCON0 &= 0;
UMCON0 &= ~(1<<4);
ULCON0 = 0X3;
UCON0 = 0X5;
UBRDIV0 = ((int)(50000000/115200/16)-1);
putstr("Hello,I am fs2410 uart0!\n");
int i = 0,j;
char ch;
char str[100];
for(j=0;j<100;j++)
str[j] = '\0';
while(1){
ch = getc();
putc(ch);
str[i] = ch;
i++;
if(ch == '\r'){
i = 0;
putc('\n');
putstr("fs2410:");
putstr(str);
putstr("\n");
for(j=0;j<100;j++)
str[j] = '\0';
}
}
return 0;
}