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

📄 serial.c

📁 YL9200开发板的BIOSBOX源码
💻 C
字号:
#include "../inc/def.h"
#include "../inc/config.h"
#include "../inc/board.h"
#include "AT91RM9200.h"
#include "lib_AT91RM9200.h"

U32 SerialBaud;
static U16 SerialPortSel;

U16 SerialSwitch(U16 port)
{
#ifdef	SERIAL_PORTS_SWITCH
//	U16 old_sel = SerialPortSel;
	
	SerialPortSel = port?1:0;
#else
	SerialPortSel = 0;
#endif
	return SerialPortSel;
}

void SerialChgBaud(U32 baud)
{
	AT91F_US_Configure (
		(AT91PS_USART) AT91C_BASE_DBGU,	// DBGU base address
		GetMasterClock(),				// 
		AT91C_US_ASYNC_MODE,			// mode Register to be programmed
		baud,							// baudrate to be programmed
		0);								// timeguard to be programmed

	// Enable Transmitter
	AT91F_US_EnableTx((AT91PS_USART) AT91C_BASE_DBGU);
	/* Enable Receiver */
	AT91F_US_EnableRx((AT91PS_USART)AT91C_BASE_DBGU);
	
	SerialBaud = baud;
}

void SerialTxEmpty(void)
{
	while(!AT91F_US_TxReady((AT91PS_USART)AT91C_BASE_DBGU));
}

void SerialTxChar(char c)
{
	if(c=='\n') {
		while(!AT91F_US_TxReady((AT91PS_USART)AT91C_BASE_DBGU));
		AT91F_US_PutChar((AT91PS_USART)AT91C_BASE_DBGU, '\r');
		Delay(1);
	}
	while(!AT91F_US_TxReady((AT91PS_USART)AT91C_BASE_DBGU));
	AT91F_US_PutChar((AT91PS_USART)AT91C_BASE_DBGU, c);
	//Delay(1);
}

int SerialRxReady(void)
{
	return AT91F_US_RxReady((AT91PS_USART)AT91C_BASE_DBGU);
}

char SerialRxKey(void)
{
	if(AT91F_US_RxReady((AT91PS_USART)AT91C_BASE_DBGU))
		return AT91F_US_GetChar((AT91PS_USART)AT91C_BASE_DBGU);
	return 0;
}

char SerialRxChar(void)
{
	while(!AT91F_US_RxReady((AT91PS_USART)AT91C_BASE_DBGU));
	return AT91F_US_GetChar((AT91PS_USART)AT91C_BASE_DBGU);
}

int SerialRxToBuf(char *b)
{
	if(AT91F_US_RxReady((AT91PS_USART)AT91C_BASE_DBGU)) {
		*b = AT91F_US_GetChar((AT91PS_USART)AT91C_BASE_DBGU);    
	    return 1;
	}
	return 0;
}

void SerialTxString(char *s)
{
	 while(*s)
		SerialTxChar(*s++);
}

⌨️ 快捷键说明

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