Создать файл в C - PullRequest
       52

Создать файл в C

1 голос
/ 25 июля 2011

Я использую MPLAB C32. Я хочу отобразить мою периферию в потоках, чтобы сделать что-то вроде:

FILE* uart2 = fopen("UART2", 9600, param2, param3);

или просто

FILE* uart2 = fopen("UART");

и затем используйте fprintf, чтобы написать на нем:

fprintf(uart2, fmt, params);

Какой обычный способ создания ФАЙЛА? Не имея файловой системы, я просто хочу отобразить на ней периферию.

Ответы [ 2 ]

4 голосов
/ 25 июля 2011

Вы должны написать драйверы для каждого периферийного устройства.Также вы должны переопределить свой ФАЙЛ *, чтобы у вас было достаточно информации для вызова соответствующего драйвера.А также вам нужно переопределить функции fopen и fprintf.Но это бессмысленно.Я не рекомендую такую ​​практику.Уже есть встроенная библиотека PIC32 Периферийная библиотека отсутствует.Я рекомендую использовать его.

1 голос
/ 26 июля 2011

В соответствии с Руководством пользователя компилятора MPLAB C, Документ DS51686B, (http://ww1.microchip.com/downloads/en/DeviceDoc/51686B.pdf), библиотека имеет поддержку для подключения устройств к средствам stdio. По счастливой случайности, для UART 2 установлено значение stdin / stdout/ stderr по умолчанию, но будет работать только вывод, так как _mon_getc не реализован по умолчанию. Если вы определите свой собственный, это должно разрешить ввод из UART 2 через stdin.

2.3 Стандартный I /O:

Стандартные функции библиотеки ввода / вывода поддерживают два режима работы: простой и полный. Простой режим поддерживает ввод / вывод через двухфункциональный интерфейс на одном символьном устройстве, используемом для stdout, stdin и stderr.Полный режим поддерживает полный набор стандартных функций ввода / вывода. Библиотека будет использовать полный режим, если приложение вызывает fopen, в противном случае используется простой режим.

Простой режим выполняет ввод / вывод с использованием четырех функций _mon_puts,_mon_write, _mon_getc и _mon_putc, для выполнения необработанного ввода-вывода устройства. Реализация по умолчанию _mon_getc всегда возвращает ошибку(т. е. по умолчанию ввод символов недоступен).Реализация по умолчанию _mon_putc записывает символ в UART2.Предполагается, что приложение выполнило любую необходимую инициализацию UART.Реализации по умолчанию _mon_puts и _mon_write оба просто вызывают _mon_putc итеративно.Все четыре функции определены как слабые функции и поэтому могут быть переопределены пользовательским приложением, если требуются разные функциональные возможности.См. «Библиотеки 32-битных языковых инструментов» для получения подробной информации об этих функциях.

Если вам требуется больше контроля, то описание того, как настроить среду выполнения для «подключения» ваших устройств кФункции stdio библиотеки времени выполнения компилятора описаны в документе DS51685 «32-битные языковые инструменты языка» MPLAB C32 (http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB%20C32%20Libraries.pdf).

Похоже, что большинство функций, необходимых для поддержки «полного режима», описаны в«2.18 РАЗНЫЕ ФУНКЦИИ»

...