1

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

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

要不就

FILE* uart2 = fopen("UART");

然后用 fprintf 在上面写:

fprintf(uart2, fmt, params);

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

4

2 回答 2

4

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

于 2011-07-25T12:42:27.110 回答
1

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

2.3 标准输入输出:

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

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

如果您需要更多控制,MPLAB C32“32-Bit Language Tools Libraries”文档 DS51685(http: //ww1.microchip.com/downloads/en/DeviceDoc/MPLAB%20C32%20Libraries.pdf )。

看起来支持“完整模式”所需的大多数功能都记录在“2.18 杂项功能”中

于 2011-07-26T05:31:02.233 回答