A temporary workaround for stdio hangs when using both inside and outside an interrupt

Dependencies:   mbed

Committer:
simon
Date:
Sat Feb 20 07:55:48 2010 +0000
Revision:
0:51318bb188e2

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
simon 0:51318bb188e2 1 // using 2 serial instances to workaround hand bug while using printf both inside and outside interrupt
simon 0:51318bb188e2 2
simon 0:51318bb188e2 3 #include "mbed.h"
simon 0:51318bb188e2 4
simon 0:51318bb188e2 5 Serial pc(USBTX, USBRX); // tx, rx
simon 0:51318bb188e2 6 Serial pc2(USBTX, USBRX); // tx, rx
simon 0:51318bb188e2 7
simon 0:51318bb188e2 8 // debugging LEDs
simon 0:51318bb188e2 9 DigitalOut interrupt(LED1);
simon 0:51318bb188e2 10 DigitalOut tx(LED4);
simon 0:51318bb188e2 11
simon 0:51318bb188e2 12 void handle() {
simon 0:51318bb188e2 13 char rx_byte = pc2.getc();
simon 0:51318bb188e2 14 interrupt = !interrupt;
simon 0:51318bb188e2 15 }
simon 0:51318bb188e2 16
simon 0:51318bb188e2 17 int main() {
simon 0:51318bb188e2 18 pc2.attach(handle);
simon 0:51318bb188e2 19
simon 0:51318bb188e2 20 while (1) {
simon 0:51318bb188e2 21 // send a long string of bytes
simon 0:51318bb188e2 22 tx = 1;
simon 0:51318bb188e2 23 for (int i=0;i<20;i++) {
simon 0:51318bb188e2 24 printf("If I receive while transmitting this I will crash...\r\n");
simon 0:51318bb188e2 25 }
simon 0:51318bb188e2 26 tx = 0;
simon 0:51318bb188e2 27 wait(1.0);
simon 0:51318bb188e2 28 }
simon 0:51318bb188e2 29 }