Comments 5
Странное дело - у тебя есть полноценный отладчик, но привычка отлаживать через printf еще не отпала)
Есть способ проще - использовать асинхронный трассировочный вывод (пин SWO отладчика). Переопределяешь _write туда и printf из стандартной библиотеки будет спамить в консоль.
А ещё, этот самый printf тянет за собой столько гадости, что в некоторые МК может и не влезть. Уж лучше взять LA и дрыгать ногами в режиме реального времени на время отладки.
Кстати да, принтф тяжелый и можно его не везде из-за использования динамической памяти. Но всегда можно свой putstring цельно-статический какой-нить родить и им пользоваться. Я последнее время обленился и лог вывожу просто в память, а потом отладчиком смотрю что там происходило. Ну и брякпоинты по коду и по изменению памяти - наше все.
Согласен - делаешь свой кастомный протоколо для GPIO - и спокойно с помощью LA отлеживаешься. К примеру надо мне засунуть ногодрыг в 16 веток кода, но использовать много пинов не хочется. Беру просто кодирую на одном пине число и в каждую ветку вставляю свое соответственно. В LA есть распознаватель битовой последовательности - и сразу мне пишет число - в какую ветку я попал. При желании можно и символы фигачить) Получится уарт на минималках
void nop_delay(uint32_t nop_count)
{
while(nop_count--)
{
asm("nop");
}
}
HAL_GPIO_WritePin(d->gpio_port, d->gpio_pin, 0);
nop_delay(10);
HAL_GPIO_WritePin(d->gpio_port, d->gpio_pin, 1);
nop_delay(10);
HAL_GPIO_WritePin(d->gpio_port, d->gpio_pin, 1);
nop_delay(10);
HAL_GPIO_WritePin(d->gpio_port, d->gpio_pin, 1);
nop_delay(10);
VCP STlink-v3minie быстро и просто