📄 serial_lpc23xx_v1_00.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -