我正在使用MPLAB C32。我想在流中映射外围设备,以便执行以下操作:
FILE* uart2 = fopen("UART2", 9600, param2, param3);
或只是
FILE* uart2 = fopen("UART");
然后用fprintf写上它:
fprintf(uart2, fmt, params);
创建文件的常用方法是什么?没有文件系统,我只想在其上映射外围设备。
答案 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其他功能”中