"printf" в микроконтроллере, для чего он нужен? - PullRequest
8 голосов
/ 11 января 2011

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

Ответы [ 4 ]

16 голосов
/ 11 января 2011

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

12 голосов
/ 11 января 2011

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

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

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

7 голосов
/ 11 января 2011

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

Printf

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

4 голосов
/ 22 января 2011

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

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

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

...