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

📄 com.c

📁 关于测试at91sam9260的各种驱动和功能的测试源代码。
💻 C
字号:
/*************************************** Copyright (c) *************************************************
*
*			            POLAR STAR
*				   北天星国际有限公司
*				   http://www.po-star.com
*
*文 件 名: com.c    
*
*编译环境:ADS1.2
*
********************************************************************************************************/


#include <stdio.h>
#include <string.h>
#include "main.h"
#include "com.h"

static char erase_seq[] = "\b \b";		/* erase sequence	*/
static char   tab_seq[] = "        ";		/* used to expand TABs	*/

FILE __stdout; 
FILE __stdin;



int fputc(int ch, FILE *f) 
{
    /* Our implementation of fputc */ 
    while (!AT91F_US_TxReady((AT91PS_USART)AT91C_BASE_DBGU));
    AT91F_US_PutChar((AT91PS_USART)AT91C_BASE_DBGU, (char)ch);
    return ch; 
}


int fgetc(FILE *f) 
{
    while(!AT91F_US_RxReady((AT91PS_USART)AT91C_BASE_DBGU));
    return((int)AT91F_US_GetChar((AT91PS_USART)AT91C_BASE_DBGU));
}


//*-----------------------------------------------------------------------------
//* Function Name       : AT91F_ClrScr()
//* Object              : Send a clear screen on the USART
//* Input Parameters    : 
//* Return value		: 
//*-----------------------------------------------------------------------------
void AT91F_ClrScr(void)
{
	printf(CLRSCREEN);
}

//*-----------------------------------------------------------------------------
//* Function Name       : AsciiToHex()
//* Object              : ascii to hexa conversion
//* Input Parameters    : 
//* Return value		: 
//*-----------------------------------------------------------------------------*/
unsigned int AsciiToHex(char *s, unsigned int *val)
{
	int n;

	*val=0;
	
	if(s[0] == '0' && ((s[1] == 'x') || (s[1] == 'X')))
		s+=2;
	n = 0;	
	while((n < 8) && (s[n] !=0))
	{
		*val <<= 4;
		if ( (s[n] >= '0') && (s[n] <='9'))
			*val += (s[n] - '0');
		else	
			if ((s[n] >= 'a') && (s[n] <='f'))
				*val += (s[n] - 0x57);
			else
				if ((s[n] >= 'A') && (s[n] <='F'))
					*val += (s[n] - 0x37);
			else
				return 0;
		n++;
	}

	return 1;				
}

//*-----------------------------------------------------------------------------
//* Function Name       : AT91F_DeleteChar()
//* Object              : 
//* Input Parameters    : 
//* Return value		: 
//*-----------------------------------------------------------------------------
char *AT91F_DeleteChar(char *buffer, char *p, int *colp, int *np, int plen)
{
	char *s;

	if (*np == 0) {
		return (p);
	}

	if (*(--p) == '\t') {			/* will retype the whole line	*/
		while (*colp > plen) {
			printf(erase_seq);
			(*colp)--;
		}
		for (s=buffer; s<p; ++s) {
			if (*s == '\t') {
				printf(tab_seq+((*colp) & 07));
				*colp += 8 - ((*colp) & 07);
			} else {
				++(*colp);
				fputc (*s, &__stdout);
			}
		}
	} else {
		printf(erase_seq);
		(*colp)--;
	}
	(*np)--;
	return (p);
}



//*-----------------------------------------------------------------------------
//* Function Name       : AT91F_ReadLine()
//* Object              : 
//* Input Parameters    : 
//* Return value		: 
//*-----------------------------------------------------------------------------
int AT91F_ReadLine (const char *const prompt, char *console_buffer)
{
	char *p = console_buffer;
	int	n = 0;					/* buffer index		*/
	int	plen = strlen (prompt);	/* prompt length	*/
	int	col;					/* output column cnt	*/
	char	c;

	/* print prompt */
	if (prompt)
		printf(prompt);
	col = plen;

	for (;;) {
		c = fgetc(&__stdin);

		switch (c) {
			case '\r':				/* Enter		*/
			case '\n':
				*p = '\0';
				printf ("\r\n");
				return (p - console_buffer);

			case 0x03:				/* ^C - break	*/
				console_buffer[0] = '\0';	/* discard input */
				return (-1);

			case 0x15:				/* ^U - erase line	*/
				while (col > plen) {
					printf(erase_seq);
					--col;
				}
				p = console_buffer;
				n = 0;
				continue;

			case 0x17:				/* ^W - erase word 	*/
				p = (char *)AT91F_DeleteChar(console_buffer, p, &col, &n, plen);
				while ((n > 0) && (*p != ' ')) {
					p=(char *)AT91F_DeleteChar(console_buffer, p, &col, &n, plen);
				}
				continue;

			case 0x08:				/* ^H  - backspace	*/
			case 0x7F:				/* DEL - backspace	*/
				p=(char *)AT91F_DeleteChar(console_buffer, p, &col, &n, plen);
			continue;

			default:
			/*
			 * Must be a normal character then
			 */
			if (n < (AT91C_CB_SIZE -2)) 
			{
				++col;		/* echo input		*/
				fputc(c, &__stdout);
				*p++ = c;
				++n;
			} 
			else 
			{			/* Buffer full		*/
				fputc ('\a', &__stdout);
			}
		}
	}
}


//*-----------------------------------------------------------------------------
//* Function Name       : AT91F_WaitKeyPressed()
//* Object              : 
//* Input Parameters    : 
//* Return value		: 
//*-----------------------------------------------------------------------------
/*void AT91F_WaitKeyPressed(void)
{
	int c;
    	printf("Hit a Key!");	    	    	
		c = fgetc(&__stdin);
}
*/

⌨️ 快捷键说明

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