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

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

或者只是
FILE* uart2 = fopen("UART");

然后使用fprintf在上面书写:
fprintf(uart2, fmt, params);

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

最佳答案

根据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:
标准输入/输出库函数支持两种模式
操作简单全面。简单模式支持通过两个
用于stdout、stdin的单字符设备上的功能接口
还有斯特德。完整模式支持完整的标准I/O集
功能。如果应用程序调用
fopen,否则使用简单模式。
简单模式使用四个函数执行I/O,它们分别是'u mon_puts,'u mon_write,',
_mon_getc和mon_putc,以执行原始设备I/O。默认
mon_getc的实现总是返回失败(即,默认情况下,
字符输入不可用)默认实现
_mon_putc将字符写入UART2。假设
应用程序已执行任何必要的UART初始化。
mon-puts和mon-write的默认实现都很简单
循环调用mon_putc。所有四个函数都被定义为弱函数
如果
需要不同的功能。参见“32位语言工具
“库”以获取有关这些功能的详细信息。
如果您需要更多的控制,MPLAB C32“32位语言工具库”文档DS51685(http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB%20C32%20Libraries.pdf)中描述了如何自定义运行时以将您的设备“连接”到编译器运行时库的stdio设施。
看起来支持“全模式”所需的大多数功能都记录在“2.18杂项功能”中

关于c - 在C中创建一个FILE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6816167/

10-09 08:03