7 typedef unsigned int uint;
12 void debug_putc(int c)
14 while (!LL_USART_IsActiveFlag_TXE(USART2))
16 LL_USART_TransmitData8(USART2, c);
19 void debug_puts(const char *s)
33 static void printf_string(const char *s, uint width, uint flags)
36 uint pad = (len < width) ? width - len : 0;
37 char pad_char = (flags & PF_ZERO_PAD) ? '0' : ' ';
43 if (!(flags & PF_LEFT))
47 static void printf_number(uint i, uint width, uint flags, uint base)
50 char *w = buf + sizeof(buf);
52 if (flags & PF_SIGNED)
64 uint digit = i % base;
68 *--w = ((flags & PF_UPPERCASE) ? 'A' : 'a') + digit - 10;
73 if (flags & PF_NEGATIVE)
76 printf_string(w, width, flags);
79 void debug_printf(const char *fmt, ...)
105 flags |= PF_ZERO_PAD;
108 while (*fmt >= '0' && *fmt <= '9')
109 width = 10*width + *fmt++ - '0';
115 printf_number(va_arg(args, int), width, flags | PF_SIGNED, 10);
118 printf_number(va_arg(args, int), width, flags, 10);
121 flags |= PF_UPPERCASE;
124 printf_number(va_arg(args, int), width, flags, 16);
127 printf_string(va_arg(args, char *), width, flags);
144 debug_printf(">>> %d\r\n", cnt);
146 LL_GPIO_SetOutputPin(LD2_GPIO_Port, LD2_Pin);
147 LL_GPIO_SetOutputPin(MEGGY1_GPIO_Port, MEGGY1_Pin);
148 LL_GPIO_SetOutputPin(MEGGY2_GPIO_Port, MEGGY2_Pin);
149 LL_GPIO_SetOutputPin(MEGGY3_GPIO_Port, MEGGY3_Pin);
150 if (LL_GPIO_IsInputPinSet(BLUE_BUTTON_GPIO_Port, BLUE_BUTTON_Pin))
151 LL_GPIO_SetOutputPin(MEGGY4_GPIO_Port, MEGGY4_Pin);
153 LL_GPIO_ResetOutputPin(LD2_GPIO_Port, LD2_Pin);
154 LL_GPIO_ResetOutputPin(MEGGY1_GPIO_Port, MEGGY1_Pin);
155 LL_GPIO_ResetOutputPin(MEGGY2_GPIO_Port, MEGGY2_Pin);
156 LL_GPIO_ResetOutputPin(MEGGY3_GPIO_Port, MEGGY3_Pin);
157 LL_GPIO_ResetOutputPin(MEGGY4_GPIO_Port, MEGGY4_Pin);