示例#1
0
文件: aprom.c 项目: clarenceliu/Mplib
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
}
示例#3
0
/*---------------------------------------------------------------------------------------------------------*/
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);
				
		    }
		}
	}

}
示例#4
0
/**************************************************************************//**
 * @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;
}
示例#5
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
}
示例#6
0
/**
 * @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
}
示例#7
0
/**************************************************************************//**
 * @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;
	}
}
示例#8
0
/*---------------------------------------------------------------------------------------------------------*/
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);
				
		    }
		}
	}

}
示例#9
0
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 */
}
示例#10
0
/**************************************************************************//**
 * @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;
        }
    }
}
示例#11
0
/**
 * @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
}