Exemplo n.º 1
0
int main() 
{
	  SystemInit();
	SystemCoreClockUpdate();
	  GPIO_PinDirection(P2_0,OUTPUT);
	GPIO_PinDirection(P2_1,OUTPUT);
	GPIO_PinDirection(P2_2,OUTPUT);
	GPIO_PinDirection(P2_3,OUTPUT);
	
	GPIO_PinWrite(P2_0,1);
    UsbSerial_Init(9600);
	GPIO_PinWrite(P2_1,1);
    
    while(1)
    {
        UsbSerial_TxString(" Welcome to ARM Serial Programming by ExploreEmbedded\n\r");
    }
    
}
Exemplo n.º 2
0
void UsbSerial_Printf(const char *argList, ...)
{
    const char *ptr;
    double v_floatNum_f32;
    va_list argp;
    sint16_t v_num_s16;
    sint32_t v_num_s32;
    uint16_t v_num_u16;
    uint32_t v_num_u32;
    char *str;
    char  ch;
    uint8_t v_numOfDigitsToTransmit_u8;

    va_start(argp, argList);

    /* Loop through the list to extract all the input arguments */
    for(ptr = argList; *ptr != '\0'; ptr++)
    {

        ch= *ptr;
        if(ch == '%')         /*Check for '%' as there will be format specifier after it */
        {
            ptr++;
            ch = *ptr;
            if((ch>=0x30) && (ch<=0x39))
            {
                v_numOfDigitsToTransmit_u8 = 0;
                while((ch>=0x30) && (ch<=0x39))
                {
                    v_numOfDigitsToTransmit_u8 = (v_numOfDigitsToTransmit_u8 * 10) + (ch-0x30);
                    ptr++;
                    ch = *ptr;
                }
            }
            else
            {
                v_numOfDigitsToTransmit_u8 = C_MaxDigitsToTransmitUsingPrintf_U8;
            }                


            switch(ch)       /* Decode the type of the argument */
            {

            case 'C':
            case 'c':     /* Argument type is of char, hence read char data from the argp */
                ch = va_arg(argp, int);
                UsbSerial_TxChar(ch);
                break;



            case 'd':    /* Argument type is of signed integer, hence read 16bit data from the argp */
                v_num_s16 = va_arg(argp, int);
#if (Enable_UsbSerial_TxNumber == 1)
                if(v_num_s16<0)
                { /* If the number is -ve then display the 2's complement along with '-' sign */ 
                    v_num_s16 = -v_num_s16;
                    UsbSerial_TxChar('-');
                }
                UsbSerial_TxNumber(C_DECIMAL_U8,v_num_s16,v_numOfDigitsToTransmit_u8);
#endif
                break;


			   
            case 'D':    /* Argument type is of integer, hence read 16bit data from the argp */
                v_num_s32 = va_arg(argp, sint32_t);
#if (Enable_UsbSerial_TxNumber == 1)                
                if(v_num_s32<0)
                { /* If the number is -ve then display the 2's complement along with '-' sign */
                    v_num_s32 = -v_num_s32;
                    UsbSerial_TxChar('-');
                }
                UsbSerial_TxNumber(C_DECIMAL_U8,v_num_s32,v_numOfDigitsToTransmit_u8);
#endif                
                break;    



            case 'u':    /* Argument type is of unsigned integer, hence read 16bit unsigned data */
                v_num_u16 = va_arg(argp, int);
#if (Enable_UsbSerial_TxNumber == 1)                
                UsbSerial_TxNumber(C_DECIMAL_U8,v_num_u16,v_numOfDigitsToTransmit_u8);
#endif                
                break;



            case 'U':    /* Argument type is of integer, hence read 32bit unsigend data */
                v_num_u32 = va_arg(argp, uint32_t);
#if (Enable_UsbSerial_TxNumber == 1)                
                UsbSerial_TxNumber(C_DECIMAL_U8,v_num_u32,v_numOfDigitsToTransmit_u8);
#endif                
                break;            


            case 'x':  /* Argument type is of hex, hence hexadecimal data from the argp */
                v_num_u16 = va_arg(argp, int);
#if (Enable_UsbSerial_TxNumber == 1)                
                UsbSerial_TxNumber(C_HEX_U8, v_num_u16,v_numOfDigitsToTransmit_u8);
#endif                
                break;



            case 'X':  /* Argument type is of hex, hence hexadecimal data from the argp */
                v_num_u32 = va_arg(argp, uint32_t);
#if (Enable_UsbSerial_TxNumber == 1)                        
                UsbSerial_TxNumber(C_HEX_U8, v_num_u32,v_numOfDigitsToTransmit_u8);
#endif                
                break;



            case 'b':  /* Argument type is of binary,Read int and convert to binary */
                v_num_u16 = va_arg(argp, int);
#if (Enable_UsbSerial_TxNumber == 1)                        
                if(v_numOfDigitsToTransmit_u8 == C_MaxDigitsToTransmitUsingPrintf_U8)
                {
                    v_numOfDigitsToTransmit_u8 = 16;
                }
                UsbSerial_TxNumber(C_BINARY_U8, v_num_u16,v_numOfDigitsToTransmit_u8);
#endif                
                break;



            case 'B':  /* Argument type is of binary,Read int and convert to binary */
                v_num_u32 = va_arg(argp, uint32_t);
#if (Enable_UsbSerial_TxNumber == 1)                
                if(v_numOfDigitsToTransmit_u8 == C_MaxDigitsToTransmitUsingPrintf_U8)
                    v_numOfDigitsToTransmit_u8 = 16;                
                UsbSerial_TxNumber(C_BINARY_U8, v_num_u32,v_numOfDigitsToTransmit_u8);    
#endif                
                break;



            case 'F':
            case 'f': /* Argument type is of float, hence read double data from the argp */
                v_floatNum_f32 = va_arg(argp, double);
#if (Enable_UsbSerial_TxFloatNumber == 1)                
                UsbSerial_TxFloatNumber(v_floatNum_f32);
#endif
                break;



            case 'S':
            case 's': /* Argument type is of string, hence get the pointer to sting passed */
                str = va_arg(argp, char *);
                UsbSerial_TxString(str);                
                break;



            case '%':
                UsbSerial_TxChar('%');
                break;
            }
        }
        else
        {