this transfers data (which is stored in "bin" file in mbed storage) into LPC1114, LPC1115, LPC81x, LPC82x, LPC1768/LPC1769 and LPC11U68/LPC11E68 internal flash memory through ISP.
Dependencies: mbed MODSERIAL DirectoryList
serial_utilities.cpp
00001 #include "mbed.h" 00002 #include "serial_utilities.h" 00003 #include "isp.h" 00004 00005 Serial pc ( USBTX,USBRX ); 00006 00007 #if 0 00008 Serial target( p28, p27 ); 00009 #else 00010 #define MODSERIAL_DEFAULT_RX_BUFFER_SIZE 512 00011 #define MODSERIAL_DEFAULT_TX_BUFFER_SIZE 512 00012 #include "MODSERIAL.h" 00013 MODSERIAL target( p28, p27 ); // 00014 //MODSERIAL target( p9, p10 ); // if you need to change the UART pin, change here 00015 #endif 00016 00017 Timeout timeout; 00018 00019 int timeout_flag = 0; 00020 00021 00022 void set_target_baud_rate( int baud_rate ) 00023 { 00024 target.baud( baud_rate ); 00025 } 00026 00027 00028 void usb_serial_bridge_operation( void ) 00029 { 00030 while (1) { 00031 00032 if ( pc.readable() ) { 00033 target.putc( pc.getc() ); 00034 } 00035 00036 if ( target.readable() ) { 00037 pc.putc( target.getc() ); 00038 } 00039 } 00040 } 00041 00042 00043 void put_string( char *s ) 00044 { 00045 char c; 00046 00047 while ( c = *s++ ) { 00048 target.putc( c ); 00049 toggle_led( 0 ); 00050 } 00051 } 00052 00053 00054 void put_binary( char *b, int size ) 00055 { 00056 for ( int i = 0; i < size; i++ ) { 00057 target.putc( *b++ ); 00058 toggle_led( 0 ); 00059 } 00060 } 00061 00062 void set_flag() 00063 { 00064 timeout_flag = 1; 00065 } 00066 00067 00068 void get_string( char *s ) 00069 { 00070 int i = 0; 00071 char c = 0; 00072 timeout_flag = 0; 00073 00074 timeout.attach( &set_flag, 1 ); 00075 00076 do { 00077 do { 00078 if ( target.readable() ) { 00079 c = target.getc(); 00080 00081 if ( ( c == '\n') || (c == '\r') ) 00082 break; 00083 00084 *s++ = c; 00085 i++; 00086 toggle_led( 1 ); 00087 } 00088 00089 if ( timeout_flag ) 00090 return; 00091 } while ( 1 ); 00092 } while ( !i ); 00093 00094 *s = '\0'; 00095 } 00096 00097 00098 int get_binary( char *b, int length ) 00099 { 00100 int i; 00101 00102 timeout_flag = 0; 00103 timeout.attach( &set_flag, 1 ); 00104 00105 for ( i = 0; i < length; ) { 00106 if ( target.readable() ) { 00107 *b++ = target.getc(); 00108 i++; 00109 toggle_led( 1 ); 00110 } 00111 00112 if ( timeout_flag ) 00113 return ( i ); 00114 } 00115 00116 return ( i ); 00117 } 00118 00119 00120 char read_byte( void ) 00121 { 00122 while ( !target.readable() ) 00123 ; 00124 00125 return ( target.getc() ); 00126 } 00127 00128
Generated on Sat Jul 16 2022 08:56:48 by 1.7.2