Я вижу инструкцию «printf» в примерах кодов языка c для микроконтроллера, особенно в 8051. Поскольку микроконтроллеры не имеют фиксированного отображения вывода, в чем польза инструкции «printf»?
printf в микроконтроллере, для чего он нужен?
Ответы (4)
Скорее всего, вы можете подключить консоль отладки либо через порт RS232, либо как виртуальный выход из внутрисхемного эмулятора.
printf определен для вывода на stdout, а не на «отображение вывода», stdout может быть любым потоковым устройством. Обычно в системе без дисплея он будет выводиться на последовательный интерфейс (UART), так что терминал или эмулятор терминала (например, HyperTerminal или TeraTerm) может использоваться в качестве устройства отображения.
Некоторые среды разработки реализуют «полу-хостинг», когда stdio, stdin и stderr, и даже в некоторых случаях файловая система предоставляется хостом разработки через интерфейс отладчика (JTAG, ICE, SWD и т. Д.).
Как правило, библиотека вашего компилятора предоставляет вам перехватчики или заглушки, чтобы вы могли реализовать драйверы для альтернативных устройств потокового ввода-вывода, поэтому, например, вы можете реализовать один, чтобы printf выводил на ЖК-дисплей, если он есть на вашем устройстве. Это называется «ретаргетинг».
Вы можете подключить микроконтроллер к последовательному порту ПК и контролировать данные, которые вы
printf
используя гипертерминал. Также вы можете использовать его в диагностических целях.
Некоторые инструменты разработки позволяют использовать printf с учетом реализации putchar или putch. В таких инструментах, поскольку у вас есть эта функция, отправляющая символы на какое-то устройство, printf будет отображать сообщения на этом устройстве.
Вам просто нужно выполнить правильную инициализацию устройства, реализовать putchar, putch или что-то подобное (проверьте документацию компилятора / библиотеки) и вуаля! Ваш printf будет вести себя так, как вы ожидаете.
PS: Некоторые компиляторы / библиотеки не реализуют все спецификаторы формата printf. Опять же, проверьте свои документы.