串口试验:用串口调试工具,先接收数据,后把接收的数据发送出来。发送0时,接收窗口没有0显示,通过软件调试时,确有0存入U0THR中的,不知为何啊?程序如下:<br /><br />/****************************************************************<br />*名称: COM_Puts( )<br />*功能: 发送数据存入send_buf,并触发UART0发送中断<br />*入口参数: pBuffer 发送数据首地址 <br /> size 发送数据字节长度<br />*出口参数: 无<br />****************************************************************/<br /><br />void COM_Puts(UINT8 *pBuffer, UINT32 size)<br />{<br /> UINT32 i;<br /> if( size>0)<br /> {<br /> sgSendSize = min(SEND_BUFFER_SIZE,size)-1; // sgSendSize为存入到send_buf的数据个数<br /> <br /> while( SendFinished == FALSE ); // 等待上一次发送完毕<br /> <br /> SendFinished = FALSE;<br /> U0THR = *pBuffer++; // 发送首个数据,触发发送中断<br /> for(i=0;i<sgSendSize;i++)<br /> { <br /> send_buf = *(pBuffer+i);<br /> }<br /> <br /> U0IER |= 0x02; <br /> } <br /> }<br /><br />中断子程序:<br />case 0x02: // 发送中断<br /> for(i=0;i<16;i++) // 一次发送16个数据<br /> { <br /> U0THR = send_buf[sgSendCounter++];<br /> if(sgSendCounter>sgSendSize-1)<br /> break;<br /> }<br /> <br /> if(sgSendCounter>sgSendSize-1) // 数据接收完成<br /> { <br /> U0IER = 0x01; // 关闭发送使能<br /> SendFinished = TRUE; // 置标志位<br /> }<br /> break; <br /> |
|