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

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

4 ответов


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


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

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

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


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

printf

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


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

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

PS: некоторые компиляторы/библиотеки не выполнять все спецификаторы формата printf. Еще раз проверьте свои документы.