Test of UART RX overrun handling (lockup test)

Dependencies:   mbed

Type in characters fast into serial terminal too see if lockup occurs from UART RX overrun.

Committer:
dudmuck
Date:
Fri Nov 20 00:12:58 2015 +0000
Revision:
0:76154cf1151b
test of UART RX overrun handling

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dudmuck 0:76154cf1151b 1 #include "mbed.h"
dudmuck 0:76154cf1151b 2
dudmuck 0:76154cf1151b 3 //------------------------------------
dudmuck 0:76154cf1151b 4 // Hyperterminal configuration
dudmuck 0:76154cf1151b 5 // 9600 bauds, 8-bit data, no parity
dudmuck 0:76154cf1151b 6 // UART RX overrun: Type in characters quickly to see if program freezes
dudmuck 0:76154cf1151b 7 //------------------------------------
dudmuck 0:76154cf1151b 8
dudmuck 0:76154cf1151b 9 Serial pc(USBTX, USBRX);
dudmuck 0:76154cf1151b 10
dudmuck 0:76154cf1151b 11 DigitalOut myled(LED1);
dudmuck 0:76154cf1151b 12
dudmuck 0:76154cf1151b 13 void rx_cb()
dudmuck 0:76154cf1151b 14 {
dudmuck 0:76154cf1151b 15 int i;
dudmuck 0:76154cf1151b 16
dudmuck 0:76154cf1151b 17 pc.putc(pc.getc()); // echo
dudmuck 0:76154cf1151b 18 myled = 1;
dudmuck 0:76154cf1151b 19
dudmuck 0:76154cf1151b 20 /* delay is very bad action here,
dudmuck 0:76154cf1151b 21 * but purpose is to create a UART RX overrun */
dudmuck 0:76154cf1151b 22 for (i = 0; i < 0x20000; i++)
dudmuck 0:76154cf1151b 23 __nop();
dudmuck 0:76154cf1151b 24
dudmuck 0:76154cf1151b 25 myled = 0;
dudmuck 0:76154cf1151b 26 }
dudmuck 0:76154cf1151b 27
dudmuck 0:76154cf1151b 28 int main()
dudmuck 0:76154cf1151b 29 {
dudmuck 0:76154cf1151b 30 pc.printf("\r\nstart\r\n");
dudmuck 0:76154cf1151b 31 pc.attach(&rx_cb);
dudmuck 0:76154cf1151b 32
dudmuck 0:76154cf1151b 33 while(1) {
dudmuck 0:76154cf1151b 34 __nop();
dudmuck 0:76154cf1151b 35 }
dudmuck 0:76154cf1151b 36 }