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.
Diff: Serial.cpp
- Revision:
- 1:e4163fd9aa4c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Serial.cpp Mon May 04 17:52:49 2020 +0000
@@ -0,0 +1,99 @@
+#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;
+ }
+ }
+}
\ No newline at end of file