main.cpp
- Committer:
- mbed714
- Date:
- 2010-02-20
- Revision:
- 0:90e9a34552d3
File content as of revision 0:90e9a34552d3:
#include "mbed.h"
// Test app to cause program to suddently terminate when using serial interrupt...
// Line 24 seems to be the important bit, but I don't really understand why?
// Is it perhaps the putc is peroperly clearing the interrupt flag instead of the getc?
// usb serial device defaults to 9600 baud, 8N1 on /dev/ttyACM0 (in Linux!)
Serial pc(USBTX, USBRX); // tx, rx
// debugging LEDs
DigitalOut interrupt(LED1);
DigitalOut tx(LED4);
// one byte receive buffer
char rx_byte;
void handle()
{
interrupt = 1;
//if(pc.readable()) // <--- this line doesn't matter either way...
{
rx_byte = pc.getc();
//pc.putc(rx_byte); // <--- WITHOUT THIS LINE, THE APPLICATION WILL HANG IF IT RECEIVES WHILE SENDING!
}
interrupt = 0;
return;
}
int main()
{
interrupt = 0;
tx = 0;
pc.attach(handle);
while(1)
{
// send a long string of bytes
tx = 1;
for(int i=0;i<20;i++)
{
NVIC_DisableIRQ(UART0_IRQn);
pc.printf("If I receive while transmitting this I *won't* crash...\r\n");
NVIC_EnableIRQ(UART0_IRQn);
}
tx = 0;
wait(1.0);
}
}