serial_lpc23xx_v1_00.c

来自「just uploading the file to get a new dow」· C语言 代码 · 共 48 行

C
48
字号
#include "app_config.h"

const unsigned long serial_base[MAX_SERIAL] = {UART0_BASE_ADDR,UART1_BASE_ADDR,UART2_BASE_ADDR,UART3_BASE_ADDR};

void SerialInit(unsigned char dev,unsigned char dll,unsigned char fdr) //initial UART
{
	//baud rate = PCLK / (16 * dll * (1 + fdr(3..0) / fdr(7..4))
	(*(volatile unsigned long *)(serial_base[dev] + U_LCR)) = 0x83;		// 8 n 1
	(*(volatile unsigned long *)(serial_base[dev] + U_DLL)) = dll;
	(*(volatile unsigned long *)(serial_base[dev] + U_FDR)) = fdr;
	(*(volatile unsigned long *)(serial_base[dev] + U_LCR)) = 0x03;
	(*(volatile unsigned long *)(serial_base[dev] + U_FCR)) = 0x01;
}

unsigned char SerialIsRxError(unsigned char dev)
{
	if ((*(volatile unsigned long *)(serial_base[dev] + U_LSR)) & (SER_OVR_ERR | SER_PAR_ERR | SER_FRM_ERR))
		return (1);
	else
		return (0);
}

unsigned char SerialIsRxReady(unsigned char dev)
{
	if ((*(volatile unsigned long *)(serial_base[dev] + U_LSR)) & SER_RXD_RDY)
		return (1);
	else
		return (0);
}

char SerialGetRx(unsigned char dev)
{
	return (*(volatile unsigned long *)(serial_base[dev] + U_RBR));
}

unsigned char SerialIsTxEmpty(unsigned char dev)
{
	if ((*(volatile unsigned long *)(serial_base[dev] + U_LSR)) & SER_TXD_EMP)
		return (1);
	else
		return (0);
}

void SerialSendTx(unsigned char dev,char c)
{
	(*(volatile unsigned long *)(serial_base[dev] + U_THR)) = c;
}

⌨️ 快捷键说明

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