2011-01-11 4 views
8

Я вижу инструкцию «printf» в примерах кодов языка c для микроконтроллера, особенно в 8051. Так как микроконтроллеры не имеют фиксированного выходного дисплея, что такое использование команды «printf»?«printf» в микроконтроллере, для чего он нужен?

+0

Возможно, это просто заглушка для стимулятора/отладчика? не могу сказать, не увидев исходный код библиотеки. –

ответ

16

Скорее всего, вы можете подключить консоль отладки либо через порт RS232, либо как виртуальный выход из встроенного эмулятора.

7

Вы можете интерфейс микроконтроллера к последовательному порту ПК и контролировать данные, которые вы

Printf

с помощью HyperTerminal. Также вы можете использовать его для диагностических целей.

11

printf определен для вывода на стандартный вывод, а не на «выходной дисплей», stdout может быть любым устройством потока. Обычно в системе без дисплея она выводится на последовательный интерфейс (UART), так что в качестве устройства отображения может использоваться терминал или эмулятор терминала (например, HyperTerminal или TeraTerm).

Некоторые среды разработки реализуют «полу-хостинг», где stdio, stdin и stderr, и даже в некоторых случаях файловая система предоставляется хостом разработки через интерфейс отладчика (JTAG, ICE, SWD и т. Д.).

Как правило, библиотека вашего компилятора предоставит вам крючки или заглушки, чтобы вы могли реализовать драйверы для альтернативных устройств ввода-вывода потока, так что, например, вы могли бы реализовать их так, чтобы printf выводил на ЖК-дисплей, если ваше устройство имеет один , Это называется «перенацеливание».

4

Некоторые инструменты разработки позволяет использовать Printf дается реализация putchar или путча. В таких инструментах, поскольку у вас есть эта функция отправки символов на какое-то устройство, printf будет отображать сообщения на этом устройстве.

Вам просто нужно выполнить правильную инициализацию устройства, реализовать putchar, putch или такие (проверьте ваши документы компилятора/lib) и voilá! Ваш printf будет вести себя так, как вы ожидаете.

PS: Некоторые компиляторы/библиотеки не реализуют все спецификаторы формата printf. Опять же, проверьте свои документы.