汉尼拔勇闯天涯
汉尼拔闯天涯
关注数: 36
粉丝数: 27
发帖数: 65
关注贴吧数: 102
ARM9 mini2440的终端输出问题 用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) } }
1
下一页