Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Serial.cpp
- Committer:
- franciscodias
- Date:
- 2020-05-04
- Revision:
- 1:e4163fd9aa4c
File content as of revision 1:e4163fd9aa4c:
#include "Serial.h"
#include "Utilities.h"
unsigned char rxBuff[64];
char rxHead, rxTail;
void UART1interrupt( iv IVT_UART_1 ilevel 6 ics ICS_AUTO)
{
rxBuff[rxHead++] = UART1_Read(); // read the received data
U1RXIF_bit = 0;
}
void Serial_Init(long baudrate)
{
AD1PCFG = 0xFFFF; // Configure AN pins as digital I/O
UART1_Init(9600);
rxHead = 0;
rxTail = 0;
U1IP0_bit = 0; // Set UART2 interrupt
U1IP1_bit = 1; // Set interrupt priorities
U1IP2_bit = 1; // Set UART2 interrupt to level 6
U1RXIE_bit = 1; // Set UART Receive Interrupt
U1RXIF_bit = 0;
EnableInterrupts(); // Enable interruts as previously set
}
unsigned char Serial_Write(unsigned char c)
{
UART1_Write(c);
return 1;
}
unsigned char Serial_Read()
{
unsigned char c;
if (rxTail < rxHead)
{
c = rxBuff[rxTail++];
if (rxTail == rxHead)
{
rxHead = 0;
rxTail = 0;
}
}
else
{
rxHead = 0;
rxTail = 0;
c = -1;
}
return c;
}
unsigned char Serial_Available()
{
return rxHead - rxTail;
}
unsigned char Serial_ReadBytes(char *buf, unsigned char len)
{
unsigned char cnt = 0;
if (len < rxHead - rxTail)
{
ArrayCopy(buf, &rxBuff[rxTail], len);
rxTail += len;
cnt = len;
}
else if (len == rxHead - rxTail)
{
ArrayCopy(buf, &rxBuff[rxTail], len);
rxTail = 0;
rxHead = 0;
cnt = len;
}
else
{
ArrayCopy(buf, &rxBuff[rxTail], rxHead - rxTail);
cnt = rxHead - rxTail;
rxTail = 0;
rxHead = 0;
}
return cnt;
}
void Serial_Print(unsigned char *txt)
{
short i = strlen(txt);
while (1)
{
UART1_Write(*txt);
++txt;
--i;
if (i == 0)
{
break;
}
}
}