extern void usbcdcSendByte(uint8_t c) { // Massive ugly delay required uint32_t i, delay; delay = ((CFG_CPU_CCLK/SCB_SYSAHBCLKDIV) / 25000); for ( i = 0; i < delay; i++ ) { __asm("nop"); } // Send byte to EP USB_WriteEP (CDC_DEP_IN, (unsigned char *)&c, 1); CDC_DepInEmpty = 1; } |
void USB_Reset (void) { LPC_USB->DevIntClr = 0x000FFFFF; /* Enable all eight(8) EPs, note: EP won't be ready until it's configured/enabled when device sending SetEPStatus command to the command engine. */ LPC_USB->DevIntEn = DEV_STAT_INT | (0xFF<<1) | (USB_SOF_EVENT ? FRAME_INT : 0); /* enable interrupt on NAK for bulk OUT endpoints */ WrCmdDat(CMD_SET_MODE, DAT_WR_BYTE(INAK_AI)); return; } |
/**************************************************************************/ /*! @brief Sends a single byte to a pre-determined peripheral (UART, etc.). @param[in] byte Byte value to send */ /**************************************************************************/ void __putchar(const char c) { #ifdef CFG_PRINTF_UART // Send output to UART uartSendByte(c); #endif #ifdef CFG_PRINTF_USBCDC // Send output to USB if connected if (USB_Configuration) { usbcdcSendByte(c); } #endif #ifdef CFG_PRINTF_CWDEBUG // Send output to the CW debug interface debug_printf("%c", c); #endif } |
//use printf output to write UART or USB #define USB_OUTPUT //globals volatile unsigned int string_counter; volatile char string_buffer[64]; #ifdef USB_OUTPUT int __write (int iFileHandle, uint8_t *pcBuffer, uint8_t iLength) { unsigned char len_count; //len counter unsigned char print=0; //print flag for(len_count=0;len_count< iLength;len_count++)//read loop { string_buffer[string_counter]= *pcBuffer; //fill buffer if(*pcBuffer == 0x0D)print=1; //check return pcBuffer++; //inc buffer pointer string_counter++; //inc counter } if((string_counter>63) || print) //if max buffer or return { USB_WriteEP (CDC_DEP_IN, (unsigned char *)&string_buffer[0], string_counter); string_counter=0; //reset counter } return iLength; } #else // Function __write() ->printf int __write (int iFileHandle, uint8_t *pcBuffer, uint8_t iLength) { UARTSend(pcBuffer,iLength); return iLength; } #endif |