⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.c

📁 编译后直接运行的MP3播放器全部C语言源代码 一个包含FAT文件系统、系统引导 Boot、FLASH Driver等内容的
💻 C
📖 第 1 页 / 共 2 页
字号:
	send = (UINT8)(addr & 0xFF);	UartWrite(serial_handle, &send, 1);	UartRead(serial_handle, &received, 1); // response	if (received != ADDRESS)	{		printf("Protocol error, receiced 0x%02X!\n", received);		return 1;	}	// send the write command	send = BYTE_WRITE;	UartWrite(serial_handle, &send, 1);	// transmit the data	UartWrite(serial_handle, &byte, 1);		UartRead(serial_handle, &received, 1); // response	if (received != BYTE_WRITE)	{		printf("Protocol error!\n");		return 1;	}	return 0;}// read many bytes using the target monitorint ReadByteMultiple(tUartHandle serial_handle, UINT32 addr, UINT32 size, UINT8* pBuffer){	UINT8 send, received;	// send the address command	send = ADDRESS;	UartWrite(serial_handle, &send, 1);	// transmit the address, big endian	send = (UINT8)((addr>>24) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)((addr>>16) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)((addr>>8) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)(addr & 0xFF);	UartWrite(serial_handle, &send, 1);	UartRead(serial_handle, &received, 1); // response	if (received != ADDRESS)	{		printf("Protocol error!\n");		return 1;	}	while (size)	{		if (size >= 16)		{	// we can use a "burst" command			send = BYTE_READ16;			UartWrite(serial_handle, &send, 1); // send the read command			UartRead(serial_handle, pBuffer, 16); // data response			pBuffer += 16;			size -= 16;		}		else		{	// use single byte command			send = BYTE_READ;			UartWrite(serial_handle, &send, 1); // send the read command			UartRead(serial_handle, pBuffer++, 1); // data response			size--;		}	}	return 0;}// write many bytes using the target monitorint WriteByteMultiple(tUartHandle serial_handle, UINT32 addr, UINT32 size, UINT8* pBuffer){	UINT8 send, received;	// send the address command	send = ADDRESS;	UartWrite(serial_handle, &send, 1);	// transmit the address, big endian	send = (UINT8)((addr>>24) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)((addr>>16) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)((addr>>8) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)(addr & 0xFF);	UartWrite(serial_handle, &send, 1);	UartRead(serial_handle, &received, 1); // response	if (received != ADDRESS)	{		printf("Protocol error!\n");		return 1;	}	while (size)	{		if (size >= 16)		{	// we can use a "burst" command			send = BYTE_WRITE16;			UartWrite(serial_handle, &send, 1); // send the write command			UartWrite(serial_handle, pBuffer, 16); // transmit the data			UartRead(serial_handle, &received, 1); // response			if (received != BYTE_WRITE16)			{				printf("Protocol error!\n");				return 1;			}			pBuffer += 16;			size -= 16;		}		else		{	// use single byte command			send = BYTE_WRITE;			UartWrite(serial_handle, &send, 1); // send the write command			UartWrite(serial_handle, pBuffer++, 1); // transmit the data			UartRead(serial_handle, &received, 1); // response			if (received != BYTE_WRITE)			{				printf("Protocol error!\n");				return 1;			}			size--;		}	}	return 0;}// write many bytes using the target monitorint FlashByteMultiple(tUartHandle serial_handle, UINT32 addr, UINT32 size, UINT8* pBuffer){	UINT8 send, received;	// send the address command	send = ADDRESS;	UartWrite(serial_handle, &send, 1);	// transmit the address, big endian	send = (UINT8)((addr>>24) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)((addr>>16) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)((addr>>8) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)(addr & 0xFF);	UartWrite(serial_handle, &send, 1);	UartRead(serial_handle, &received, 1); // response	if (received != ADDRESS)	{		printf("Protocol error!\n");		return 1;	}	while (size)	{		if (size >= 16)		{	// we can use a "burst" command			send = BYTE_FLASH16;			UartWrite(serial_handle, &send, 1); // send the write command			UartWrite(serial_handle, pBuffer, 16); // transmit the data			UartRead(serial_handle, &received, 1); // response			if (received != BYTE_FLASH16)			{				printf("Protocol error!\n");				return 1;			}			pBuffer += 16;			size -= 16;		}		else		{	// use single byte command			send = BYTE_FLASH;			UartWrite(serial_handle, &send, 1); // send the write command			UartWrite(serial_handle, pBuffer++, 1); // transmit the data			UartRead(serial_handle, &received, 1); // response			if (received != BYTE_FLASH)			{				printf("Protocol error!\n");				return 1;			}			size--;		}	}	return 0;}// read a 16bit halfword using the target monitorUINT16 ReadHalfword(tUartHandle serial_handle, UINT32 addr){	UINT8 send;	UINT8 received;	UINT16 halfword;	// send the address command	send = ADDRESS;	UartWrite(serial_handle, &send, 1);	// transmit the address, big endian	send = (UINT8)((addr>>24) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)((addr>>16) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)((addr>>8) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)(addr & 0xFF);	UartWrite(serial_handle, &send, 1);	UartRead(serial_handle, &received, 1); // response	if (received != ADDRESS)	{		printf("Protocol error!\n");		return 1;	}	// send the read command	send = HALFWORD_READ;	UartWrite(serial_handle, &send, 1);	UartRead(serial_handle, &received, 1); // response	halfword = received << 8; // highbyte	UartRead(serial_handle, &received, 1);	halfword |= received; // lowbyte	return halfword;}// write a 16bit halfword using the target monitorint WriteHalfword(tUartHandle serial_handle, UINT32 addr, UINT16 halfword){	UINT8 send;	UINT8 received;	// send the address command	send = ADDRESS;	UartWrite(serial_handle, &send, 1);	// transmit the address, big endian	send = (UINT8)((addr>>24) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)((addr>>16) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)((addr>>8) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)(addr & 0xFF);	UartWrite(serial_handle, &send, 1);	UartRead(serial_handle, &received, 1); // response	if (received != ADDRESS)	{		printf("Protocol error!\n");		return 1;	}	// send the write command	send = HALFWORD_WRITE;	UartWrite(serial_handle, &send, 1);	// transmit the data	send = halfword >> 8; // highbyte	UartWrite(serial_handle, &send, 1);	send = halfword & 0xFF; // lowbyte	UartWrite(serial_handle, &send, 1);		UartRead(serial_handle, &received, 1); // response	if (received != HALFWORD_WRITE)	{		printf("Protocol error!\n");		return 1;	}	return 0;}// change baudrate using target monitorint SetTargetBaudrate(tUartHandle serial_handle, long lClock, long lBaudrate){	UINT8 send;	UINT8 received;	UINT8 brr;	long lBRR;	lBRR = lClock / lBaudrate;	lBRR = ((lBRR + 16) / 32) - 1; // with rounding	brr = (UINT8)lBRR;	// send the command	send = BAUDRATE;	UartWrite(serial_handle, &send, 1);	UartWrite(serial_handle, &brr, 1); // send the BRR value	UartRead(serial_handle, &received, 1); // response ack	if (received != BAUDRATE)	{	// bad situation, now we're unclear about the baudrate of the target		printf("Protocol error!\n");		return 1;	}	SLEEP(100); // give it some time to settle	// change our baudrate, too	UartConfig(serial_handle, lBaudrate, eNOPARITY, eONESTOPBIT, 8); 	return 0;}// call a subroutine using the target monitorint Execute(tUartHandle serial_handle, UINT32 addr, bool bReturns){	UINT8 send;	UINT8 received;	// send the address command	send = ADDRESS;	UartWrite(serial_handle, &send, 1);	// transmit the address, big endian	send = (UINT8)((addr>>24) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)((addr>>16) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)((addr>>8) & 0xFF);	UartWrite(serial_handle, &send, 1);	send = (UINT8)(addr & 0xFF);	UartWrite(serial_handle, &send, 1);	UartRead(serial_handle, &received, 1); // response	if (received != ADDRESS)	{		printf("Protocol error!\n");		return 1;	}	// send the execute command	send = EXECUTE;	UartWrite(serial_handle, &send, 1);	if (bReturns)	{	// we expect the call to return control to minimon		UartRead(serial_handle, &received, 1); // response		if (received != EXECUTE)		{			printf("Protocol error!\n");			return 1;		}	}	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -