24 #define SER_BUF_SIZE (128) // serial buffer in bytes (power 2)
25 #define SER_BUF_MASK (SER_BUF_SIZE-1ul) // buffer size mask
28 #define SER_BUF_RESET(serBuf) (serBuf.rdIdx = serBuf.wrIdx = 0)
29 #define SER_BUF_WR(serBuf, dataIn) (serBuf.data[SER_BUF_MASK & serBuf.wrIdx++] = (dataIn))
30 #define SER_BUF_RD(serBuf) (serBuf.data[SER_BUF_MASK & serBuf.rdIdx++])
31 #define SER_BUF_EMPTY(serBuf) (serBuf.rdIdx == serBuf.wrIdx)
32 #define SER_BUF_FULL(serBuf) (serBuf.rdIdx == serBuf.wrIdx+1)
33 #define SER_BUF_COUNT(serBuf) (SER_BUF_MASK & (serBuf.wrIdx - serBuf.rdIdx))
52 NVIC_DisableIRQ(UART_IRQn);
54 LPC_IOCON->PIO1_6 &= ~0x07;
55 LPC_IOCON->PIO1_6 |= 0x01;
56 LPC_IOCON->PIO1_7 &= ~0x07;
57 LPC_IOCON->PIO1_7 |= 0x01;
59 LPC_SYSCON->SYSAHBCLKCTRL |= (1<<12);
60 LPC_SYSCON->UARTCLKDIV = 0x1;
68 LPC_IOCON->PIO1_6 &= ~0x07;
69 LPC_IOCON->PIO1_7 &= ~0x07;
73 NVIC_DisableIRQ(UART_IRQn);
81 unsigned int parity,
unsigned int stopbits) {
138 Fdiv = LPC_SYSCON->UARTCLKDIV;
139 dll = (((SystemCoreClock/LPC_SYSCON->SYSAHBCLKDIV)/Fdiv)/16)/baudrate ;
141 LPC_UART->LCR = 0x80 | lcr_d | lcr_p | lcr_s;
143 LPC_UART->DLM = (dll >> 8);
144 LPC_UART->LCR = 0x00 | lcr_d | lcr_p | lcr_s;
145 LPC_UART->IER = 0x03;
147 LPC_UART->FCR = 0x07;
151 NVIC_EnableIRQ(UART_IRQn);
159 int bytesToRead, bytesRead;
162 bytesToRead = *length;
163 bytesToRead = (bytesToRead < (*length)) ? bytesToRead : (*length);
164 bytesRead = bytesToRead;
166 while (bytesToRead--) {
177 int bytesToWrite, bytesWritten;
180 bytesToWrite = *length;
181 bytesWritten = bytesToWrite;
184 while (bytesToWrite) {
194 return (bytesWritten);
unsigned char data[SER_BUF_SIZE]
void ser_InitPort(unsigned long baudrate, unsigned int databits, unsigned int parity, unsigned int stopbits)
#define SER_BUF_COUNT(serBuf)
#define SER_BUF_RESET(serBuf)
#define SER_BUF_RD(serBuf)
int ser_Read(char *buffer, const int *length)
struct __SER_BUF_T SER_BUF_T
unsigned long ser_txRestart
#define SER_BUF_EMPTY(serBuf)
void ser_LineState(unsigned short *lineState)
#define SER_BUF_WR(serBuf, dataIn)
unsigned short ser_lineState
void ser_AvailChar(int *availChar)
int ser_Write(const char *buffer, int *length)