|
我的程序大致是这样的:
void UART1_TX_Interrupt(void)
{
if(cSendData[cSendIndex]!=0)
{
UDR1=cSendData[cSendIndex];
cSendIndex++;
}
}
void TxUART1Data( char *pData )
{
char i;
for(i=0;i<20;i++)
{
cSendData=pData;
if(cSendData==0) break;
}
UDR1=cSendData[0];
cSendIndex=1;
}
void UART1DataControl( void )
{
//void *malloc(size_t);
char *pData;
pData=malloc(13*sizeof(char));
pData[0]='a';
pData[1]='b';
pData[2]='c';
pData[3]='d';
pData[4]='e';
pData[5]='f';
pData[6]='g';
pData[7]='h';
pData[8]='i';
pData[9]='j';
pData[10]='
';
pData[11]='\r';
pData[12]=0;
TxUART1Data(pData);
free(pData);
}
void main( void )
{
InitDevices();
while(1)
{
if(cTime>=100)//1秒
{
cTime=0;
UART1DataControl();
}
Delay1ms();
}
}
结果,通过超级终端收到的是abbdefghij,而不是我要的abcdefghij,让我百思不得其解,谁能告诉我是怎么回事?
我把第二个字符改为别的,结果第三个字符跟着第二个字符一样显示
-----此内容被robby007于2006-12-28,12:04:00编辑过
-----此内容被robby007于2006-12-28,12:04:47编辑过 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|