ARM9 mini2440的终端输出问题
arm9吧
全部回复
仅看楼主
level 1
用C编写了一个键盘输入字符串,100MS后原样输出的程序,输入输出都是WINDOWS系统自带的超级终端,但发现,输入正常,输出却是乱码,有哪位大神知道原因,跪求!我用的是arm-linux-gcc编译的,波特率、数据位什么的都没有错。我的代码如下,若大神会编写实现该功能的程序更好,跪求。
/*
* 发送一个字符
*/
void putc(int c)
{
/* 等待,直到发送缓冲区中的数据已经全部发送出去 */
while (!(UTRSTAT0 & TXD0READY));
/* 向UTXH0寄存器中写入数据,UART即自动将它发送出去 */
UTXH0=c;
}
void putstr(char *pt)
{
while(*pt)
{
putc(*pt++);
}
}
/*
* 接收字符
*/
unsigned char getc(void)
{
/* 等待,直到接收缓冲区中的有数据 */
while (!(UTRSTAT0 & RXD0READY));
/* 直接读取URXH0寄存器,即可获得接收到的数据 */
return URXH0;
}
//接受字符串
void getstr(char *string) //侯殿有《C标准教程》P94
{
extern void delay(int time);
char *string2=string;
char a;
int b=0;
while((a=getc())!='0')
{
if(a=='\b')
{
if((int)string2<(int)string)
{
putc('\b');
string--;
b--;
}
}
else
{
*string=a;
string++;
b++;
putc(a);
}
}
*string='\0';
putc('\n');
}
//延迟函数
void delay(int time)
{
unsigned int val=(UART_CLK>>3)/1000-1;
TCFG0&=~(0xff<<8);
TCFG0|=3<<8;
TCFG1&=~(0xf<<12);
TCFG1|=0<<12;
TCNTB3=val;
TCMPB3=val>>1;
TCON&=~(0xf<<16);
TCON|=0xb<<16;
TCON&=~(2<<16);
while(time--){
while(TCNTO3>=val>>1);
while(TCNTO3<val>>1);
};
}
void main()
{
uart0_init(); // 波特率115200,8N1(8个数据位,无校验位,1个停止位)
char *strings;
while(1)
{
getstr(*strings);
putc('\n');
delay(100);
putstr(*strings)
}
}
2013年05月12日 14点05分 1
1