在C中创建一个文件

时间:2011-07-25 12:32:41

标签: c gcc embedded microchip

我正在使用MPLAB C32。我想在流中映射外围设备,以便执行以下操作:

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

或只是

FILE* uart2 = fopen("UART");

然后用fprintf写上它:

fprintf(uart2, fmt, params);

创建文件的常用方法是什么?没有文件系统,我只想在其上映射外围设备。

2 个答案:

答案 0 :(得分:4)

您必须为每个外围设备编写驱动程序。此外,您还必须重新定义您的文件*,以便您可以获得足够的信息来调用适当的驱动程序。此外,您还需要重新定义fopen和fprintf函数。但这毫无意义。我不推荐这种做法。已经建立的库PIC32 Peripheral Library已经出来了。我建议使用它。

答案 1 :(得分:1)

根据MPLAB C编译器用户指南,文档DS51686B,(http://ww1.microchip.com/downloads/en/DeviceDoc/51686B.pdf),该库支持将设备连接到stdio工具。幸运的是,UART 2默认设置为stdin / stdout / stderr,但只有输出才有效,因为_mon_getc默认情况下没有实现。如果您定义自己的,那么应该通过stdin从UART 2启用输入。

  

2.3标准I / O:

     

标准输入/输出库函数支持两种模式   操作,简单和完整。简单模式通过两个支持I / O.   用于stdout,stdin的单个字符设备上的函数接口   和斯特德尔。完整模式支持完整的标准I / O.   功能。如果应用程序调用,库将使用完全模式   fopen,否则使用简单模式。

     

简单模式使用四个函数_mon_puts,_mon_write执行I / O,   _mon_getc和_mon_putc,用于执行原始设备I / O.默认   _mon_getc的实现总是返回失败(即默认情况下,   字符输入不可用)。默认实现   _mon_putc将字符写入UART2。假设是   应用程序已执行任何必要的UART初始化。   _mon_puts和_mon_write的默认实现都很简单   迭代地调用_mon_putc。所有四个函数都被定义为弱   函数,因此可能被用户应用程序覆盖,如果   需要不同的功能。请参阅“32位语言工具”   图书馆“有关这些功能的详细信息。

如果您需要更多控制,请参阅MPLAB C32“32位语言工具库”文档DS51685中有关如何自定义运行时以将设备“连接”到编译器运行时库的stdio工具的说明。 (http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB%20C32%20Libraries.pdf)。

看起来支持“完整模式”所需的大部分功能都记录在“2.18其他功能”中