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