char UART_GetChar(void) { #ifdef DEBUG_ENABLE_SEMIHOST # if defined (__CC_ARM) int nRet; while(SH_DoCommand(0x101, 0, &nRet) != 0) { if(nRet != 0) { SH_DoCommand(0x07, 0, &nRet); return (char)nRet; } } # else int nRet; while(SH_DoCommand(0x7, 0, &nRet) != 0) { if(nRet != 0) return (char)nRet; } # endif return (0); #else while(1) { if((DEBUG_PORT->FSR & UART_FSR_RX_EMPTY_Msk) == 0) { return (DEBUG_PORT->DATA); } } #endif }
char UART_GetChar(void) { #if defined(DEBUG_ENABLE_SEMIHOST) # if defined ( __CC_ARM ) int nRet; while(SH_DoCommand(0x101, 0, &nRet) != 0) { if(nRet != 0) { SH_DoCommand(0x07, 0, &nRet); return (char)nRet; } } # else int nRet; while(SH_DoCommand(0x7, 0, &nRet) != 0) { if(nRet != 0) return (char)nRet; } # endif #endif #ifndef DISABLE_UART while (1) { if(!(UART0->FSR & UART_FSR_RX_EMPTY_F_Msk)) { return (UART0->RBR); } } #else return(0); #endif }
/*---------------------------------------------------------------------------------------------------------*/ char GetChar(void) { #if defined(DEBUG_ENABLE_SEMIHOST) # if defined ( __CC_ARM ) int nRet; while(SH_DoCommand(0x101, 0, &nRet) != 0) { if(nRet != 0) { SH_DoCommand(0x07, 0, &nRet); return (char)nRet; } } # else int nRet; while(SH_DoCommand(0x7, 0, &nRet) != 0) { if(nRet != 0) return (char)nRet; } # endif #endif if(DEBUG_PORT == 1) { while (1){ if(UART1->FSR.RX_EMPTY == 0 ) { return (UART1->DATA); } } } else if(DEBUG_PORT == 0) { while (1){ if(UART0->FSR.RX_EMPTY == 0 ) { return (UART0->DATA); } } } else { while (1){ if(UART2->FSR.RX_EMPTY == 0 ) { return (UART2->DATA); } } } }
/**************************************************************************//** * @brief Read a char on semihosting mode. * * @param None. * * @return Character that have read. *****************************************************************************/ char SH_GetChar() { int nRet; while (SH_DoCommand(0x101, 0, &nRet) != 0) { if (nRet != 0) { SH_DoCommand(0x07, 0, &nRet); return (char) nRet; } } return 0; }
void SendChar(int ch) { #if defined(DEBUG_ENABLE_SEMIHOST) g_buf[g_buf_len++] = ch; g_buf[g_buf_len] = '\0'; if(g_buf_len + 1 >= sizeof(g_buf) || ch == '\n' || ch == '\0') { /* Send the char */ if(SH_DoCommand(0x04, (int)g_buf, NULL) != 0) { g_buf_len = 0; return; } else { int i; for(i=0;i<g_buf_len;i++) SendChar_ToUART(g_buf[i]); g_buf_len = 0; } } #else SendChar_ToUART(ch); #endif }
/** * @brief Routine to send a char * * @param None * * @returns Send value from UART debug port or semihost * * @details Send a target char to UART debug port or semihost. */ void SendChar(int ch) { #if defined(DEBUG_ENABLE_SEMIHOST) g_buf[g_buf_len++] = ch; g_buf[g_buf_len] = '\0'; if(g_buf_len + 1 >= sizeof(g_buf) || ch == '\n' || ch == '\0') { /* Send the char */ if(SH_DoCommand(0x04, (int)g_buf, NULL) != 0) { g_buf_len = 0; return; } // else // { // int i; // for(i=0;i<g_buf_len;i++) // SendChar_ToUART(g_buf[i]); // g_buf_len = 0; // } } #else // if(CurrentUARTMod == UARTMOD_DEBUG) SendChar_ToUART(ch); #endif }
/**************************************************************************//** * @brief Transmit a null-terminated string on semihosting mode. * * @param str is the string that to send. * * @return Character to write. *****************************************************************************/ void SH_SendString(const char *str) { int j; if (SH_DoCommand(0x04, (int)str, NULL) != 0) { return; } }
/*---------------------------------------------------------------------------------------------------------*/ char GetChar(void) { #if defined(DEBUG_ENABLE_SEMIHOST) && !defined(__ICCARM__) /* IAR don't support semihosted getchar */ int nRet; while(SH_DoCommand(0x101, 0, &nRet) != 0) { if(nRet != 0) { SH_DoCommand(0x07, 0, &nRet); return (char)nRet; } } #endif if(DEBUG_PORT == 1) { while (1){ if(UART1->FSR.RX_EMPTY == 0 ) { return (UART1->DATA); } } } else if(DEBUG_PORT == 0) { while (1){ if(UART0->FSR.RX_EMPTY == 0 ) { return (UART0->DATA); } } } else { while (1){ if(UART2->FSR.RX_EMPTY == 0 ) { return (UART2->DATA); } } } }
void _sys_exit(int return_code) { /* Check if link with ICE */ if(SH_DoCommand(0x18, 0x20026, NULL) == 0) { /* Make sure all message is print out */ while(IsDebugFifoEmpty() == 0); } label: goto label; /* endless loop */ }
/**************************************************************************//** * @brief Transmit a char on semihosting mode. * * @param ch is the char that to send. * * @return Character to write. *****************************************************************************/ void SH_SendChar(char ch) { g_buf[g_buf_len++] = ch; g_buf[g_buf_len] = '\0'; if (g_buf_len + 1 >= sizeof(g_buf) || ch == '\n' || ch == '\0') { g_buf_len = 0; /* Send the char */ if (SH_DoCommand(0x04, (int) g_buf, NULL) != 0) { return; } } }
/** * @brief Routine to get a char * * @param None * * @returns Get value from UART debug port or semihost * * @details Wait UART debug port or semihost to input a char. */ char GetChar(void) { #ifdef DEBUG_ENABLE_SEMIHOST int nRet; while(SH_DoCommand(0x7, 0, &nRet) != 0) { if(nRet != 0) { return (char)nRet; } } #else while (1) { if((DEBUG_PORT->FSR & UART_FSR_RX_EMPTY_Msk) == 0 ) { return (DEBUG_PORT->DATA); } } #endif }