printf в микроконтроллере, для чего он нужен?

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


person LEMUEL ADANE    schedule 11.01.2011    source источник
comment
может просто какая-то заглушка для стимулятора / отладчика? не могу сказать, не увидев исходный код библиотеки.   -  person J-16 SDiZ    schedule 11.01.2011


Ответы (4)


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

person Raph Levien    schedule 11.01.2011

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

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

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

person Clifford    schedule 11.01.2011

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

printf

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

person ckv    schedule 11.01.2011

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

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

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

person Leo-BH    schedule 22.01.2011