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

📄 mian.c

📁 以S3C44B0X嵌入式处理器为核心的嵌入式系统硬件平台上进行uClinux操作系统的剪裁、移植和通过使用其UART端口,连接PC机的串口
💻 C
字号:

/*--- include files ---*/
#include "44blib.h"
#include "44b.h"
void Uart_SendByte1(int data);

/*--- function code ---*/
char str_send[17] = "Embest S3CEV40 >\0";
char str_error[50] = "TERMINAL OVERFLOW : 256 character max !";
char str[256];
char CR[1] = {0x0A};

static int whichUart=0;


void Main(void)
{
	char input_char;				/* 用户输入的字符	*/
    int i;
    char *pt_str = str;
	

	rPCONA	 = 0x1ff;	

	// PORT B GROUP
	// BIT 	10		9		8		7		6		5		4		3		2		1		0
	//		/CS5	/CS4	/CS3	/CS2	/CS1	GPB5	GPB4	/SRAS	/SCAS	SCLK	SCKE
	//		EXT		NIC		USB		IDE		SMC		NC		NC		Sdram	Sdram	Sdram	Sdram
	//      1, 		1,   	1,   	1,    	1,    	0,       0,     1,    	1,    	1,   	1	
	rPDATB = 0x7ff;				// P9-LED1 P10-LED2
	rPCONB = 0x1cf;
    
	// PORT C GROUP
	// BUSWIDTH=16
	//  PC15	14		13		12		11		10		9		8
	//	I		I		RXD1	TXD1	I		I		I		I
	//	NC		NC		Uart1	Uart1	NC		NC		NC		NC
	//	00		00		11		11		00		00		00		00

	//  PC7		6		5		4		3		2		1		0
	//   I		I		I		I		I		I		I		I
	//   NC		NC		NC		NC		IISCLK	IISDI	IISDO	IISLRCK
	//   00		00		00		00		11		11		11		11
	rPDATC = 0xff00;
	rPCONC = 0x0ff0ffff;	
	rPUPC  = 0x30ff;	//PULL UP RESISTOR should be enabled to I/O

	// PORT D GROUP
	// PORT D GROUP(I/O OR LCD)
	// BIT7		6		5		4		3		2		1		0
	//	VF		VM		VLINE	VCLK	VD3		VD2		VD1		VD0
	//	00		00		00		00		00		00		00		00
	rPDATD= 0xff;
	rPCOND= 0xaaaa;	
	rPUPD = 0x0;
	// These pins must be set only after CPU's internal LCD controller is enable
	
	// PORT E GROUP 
	// Bit	8		7		6		5		4		3		2		1		0
	//  	CODECLK	LED4	LED5	LED6	LED7	BEEP	RXD0	TXD0	LcdDisp
	//  	10		01		01		01		01		01		10		10		01
	rPDATE	= 0x1ff;
	rPCONE	= 0x25529;	
	rPUPE	= 0x6;
	
	// PORT F GROUP
	// Bit8		7		6		5		 4		3		2		1		0
	// IISCLK	IISDI	IISDO	IISLRCK	Input	Input	Input	IICSDA	IICSCL
	// 100		100		100		100		00		00		00		10		10
	rPDATF = 0x0;
	rPCONF = 0x252a;
	rPUPF  = 0x0;

	// PORT G GROUP
	// BIT7		6		5		4		3		2		1		0
	// 	INT7	INT6	INT5	INT4	INT3	INT2	INT1	INT0
	//	S3		S4		S5		S6		NIC		EXT		IDE		USB
	//	11      11      11      11      11      11      11      11
	rPDATG = 0xff;
	rPCONG = 0xffff;
	rPUPG  = 0x0;		//should be enabled  
	rSPUCR = 0x7;  		//D15-D0 pull-up disable

	/* Non Cache area */
	rNCACHBE0=((Non_Cache_End>>12)<<16)|(Non_Cache_Start>>12); 
	/* Low level default */
	rEXTINT=0x0;



/*	Port_Init();	*/				/* 初始化44B0X的I/O口 */
	rI_ISPC = 0xffffffff;			/* 清中断 pend	*/
	Uart_Init(0,115200);			/* 初始化44B0X的串口1	*/
	
	/* printf interface */
	Uart_Printf("\n");
	Uart_Printf(str_send);
	/* get user input */
	Delay(500);
    //* Terminal handler
    while(1)
    {

        *pt_str = Uart_Getch();
		Uart_SendByte1(*pt_str);
        if (*pt_str == 0x0D)
        {
	        if (pt_str != str)
	        {
	            //* Send str_send
	            Uart_SendByte1(CR[0]);
	            //* Send received string
	            pt_str = str;
	            while (*pt_str != 0x0D)
	            {
	                Uart_SendByte1(*pt_str);
	        		pt_str++;
	            }
	            pt_str = str;
	        }
            Uart_SendByte1(CR[0]);
			Uart_Printf(str_send);
        }
            else
                pt_str++;
    }
}



void Uart_SendByte1(int data)
{
	if(whichUart==0)
    {
		if(data=='\n')
		{
		    while(!(rUTRSTAT0 & 0x2));
		    Delay(10);				//因为超能为终端的响应较慢 
		    WrUTXH0('\r');
		}
		while(!(rUTRSTAT0 & 0x2)); 	//等待直到THR为空
		Delay(10);
		WrUTXH0(data);
   	}
	else
    {
		if(data=='\n')
		{
			while(!(rUTRSTAT1 & 0x2));
			Delay(10);				// 
			rUTXH1='\r';
		}
		while(!(rUTRSTAT1 & 0x2));  //
		Delay(10);
		rUTXH1=data;
    }	
}		

⌨️ 快捷键说明

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