6 typedef unsigned int uint;
10 while (!LL_USART_IsActiveFlag_TXE(USART2))
12 LL_USART_TransmitData8(USART2, c);
15 void debug_puts(const char *s)
29 static void printf_string(const char *s, uint width, uint flags)
32 uint pad = (len < width) ? width - len : 0;
33 char pad_char = (flags & PF_ZERO_PAD) ? '0' : ' ';
39 if (!(flags & PF_LEFT))
43 static void printf_number(uint i, uint width, uint flags, uint base)
46 char *w = buf + sizeof(buf);
48 if (flags & PF_SIGNED)
60 uint digit = i % base;
64 *--w = ((flags & PF_UPPERCASE) ? 'A' : 'a') + digit - 10;
69 if (flags & PF_NEGATIVE)
72 printf_string(w, width, flags);
75 void debug_printf(const char *fmt, ...)
101 flags |= PF_ZERO_PAD;
104 while (*fmt >= '0' && *fmt <= '9')
105 width = 10*width + *fmt++ - '0';
111 printf_number(va_arg(args, int), width, flags | PF_SIGNED, 10);
114 printf_number(va_arg(args, int), width, flags, 10);
117 flags |= PF_UPPERCASE;
120 printf_number(va_arg(args, int), width, flags, 16);
123 printf_string(va_arg(args, char *), width, flags);
138 LL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
139 debug_printf("Testing printf: %08X %s\r\n", -42, "mnaeiou");