void UART_WriteHexByte(uint8_t theByte, uint8_t prefix) { char str[3]; utoa(theByte, str, 16); if (prefix) UART_WriteString("0x"); UART_WriteString(str); }
int main(void) { uint32_t t; uint32_t sindex = 0; int i; SystemCoreClockSet(MSI48M_CLOCKSRC,0,2,0); SysTick_Config(SystemCoreClock/1000); APBPeripheralClockSet(0,0); /* Enable APBx */ RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN; /* Enable SysConfig, Comp, etc. */ t = LED_Init(LED_ALL); t = LCD_Init(); result = t; LED_Toggle(LED_GREEN); LCD_WriteString("uart"); Delay(10000); LCD_Clear(); UART_Init(UART,UART_NOPARITY|UART_8BITS|UART_2_STOP|UART_BAUD_9600|UART_OVER8); for (;;) { UART_WriteString(UART,msg); Delay(2000); LED_Toggle(LED_RED); } }
/** @brief Displays CN0357 circuit readings and data to the UART @param ui16Data - ADC data register value to be displayed @param fData1 - ADC input voltage reading to be displayed @param fdata2 - Gas Concentration reading to be displayed **/ void CN0357_DisplayData(uint16_t ui16Data, float fData1, float fdata2) { if (uart_cmd == UART_TRUE) { /* condition becomes true when the system receives as Carriage Return(CR) command from the UART */ AppPrintf("\r\nADC Data Register Value = %#08x", ui16Data); /* Send valid ADC data register value*/ AppPrintf("\r\nADC Input Voltage input = %f V", fData1); /* Send valid voltage input value */ AppPrintf("\r\nGas Concentration = %f PPM", fdata2); /* Send valid gas concentration value */ UART_WriteString("\r\n"); uart_cmd = UART_FALSE; } }
void debug_output(char *pMessage){ if (!UART_IsOpened()) UART_Open(); UART_WriteString(pMessage); // UART debug }
/***************************************************************************//** * @brief Prints formatted data to console. * * @param str - String to be printed. * * @return None. *******************************************************************************/ void CONSOLE_Print(char* str, ...) { char* stringPtr; char firstParam = 0; char secondParam = 0; unsigned long xMask = 0; unsigned long dMask = 0; char chNumber = 0; unsigned long multiplier = 1; char* strArg; long longArg; double doubleArg; va_list argp; va_start(argp, str); for(stringPtr = str; *stringPtr != '\0'; stringPtr++) { if(*stringPtr!='%') { UART_WriteChar(*stringPtr); continue; } stringPtr++; firstParam = 0; while((*stringPtr >= 0x30) & (*stringPtr <= 0x39)) { firstParam *= 10; firstParam += (*stringPtr - 0x30); stringPtr++; } if(*stringPtr == '.') { stringPtr++; secondParam = 0; while((*stringPtr >= 0x30) & (*stringPtr <= 0x39)) { secondParam *= 10; secondParam += (*stringPtr - 0x30); stringPtr++; } } switch(*stringPtr) { case 'c': longArg = va_arg(argp, long); UART_WriteChar((char)longArg); break; case 's': strArg = va_arg(argp, char*); UART_WriteString(strArg); break; case 'd': longArg = va_arg(argp, long); UART_WriteString(intToStr(longArg, 10)); break; case 'x': longArg = va_arg(argp, long); xMask = 268435456; chNumber = 8; while(xMask > longArg) { xMask /= 16; chNumber--; } while(chNumber < firstParam) { UART_WriteChar('0'); chNumber++; } if(longArg != 0) { UART_WriteString(intToStr(longArg, 16)); } break; case 'f': doubleArg = va_arg(argp, double); chNumber = secondParam; while(chNumber > 0) { multiplier *= 10; chNumber--; } doubleArg *= multiplier; if(doubleArg < 0) { doubleArg *= -1; UART_WriteChar('-'); } longArg = (long)doubleArg; UART_WriteString(intToStr((longArg / multiplier), 10)); UART_WriteChar('.'); dMask = 1000000000; chNumber = 10; while(dMask > (long)(longArg % multiplier)) { dMask /= 10; chNumber--; } while(chNumber < secondParam) { UART_WriteChar('0'); chNumber++; } if((longArg % multiplier) != 0) { UART_WriteString(intToStr((longArg % multiplier), 10)); } break; } } va_end(argp); }
void UART_WriteInt16AsString(int16_t Number) { char str[10]; itoa(Number, str, 10); UART_WriteString(str); }
void UART_WriteUint16AsString(uint16_t Number) { char str[8]; utoa(Number, str, 10); UART_WriteString(str); }
void UART_WriteUintAsString(uint8_t Number) { char str[4]; utoa(Number, str, 10); UART_WriteString(str); }