This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/F28M35H52C:使用 FatFs 0.13b 到 xDEV_IN 和 xDEV_OUT 的映射

Guru**** 2616675 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/696897/compiler-f28m35h52c-using-fatfs-0-13b-mapping-to-xdev_in-and-xdev_out

器件型号:F28M35H52C

工具/软件:TI C/C++编译器

我尝试在 m3内核上使用 FatFs、但需要将 FatFs 的 xDEV_IN 和 xDEV_OUT 函数分别映射到 m3的 get_char 和 put _char 函数。  这里使用 FatFs 的指令说...

"低级输出函数是用户提供的回调函数、用于向器件发送字节。 应将其地址设置为指针'xfunc_out'、以在使用之前设置默认输出器件。 例如  xdev_out (uart2_putc); 输出函数将从 xputc 函数调用。 通常、此函数将字节放入 UART、LCD 或任何输出器件。 xsprintf/xfprintf 函数使用其参数覆盖默认输出器件。

低级输入函数是用户提供的从器件读取字节的回调函数。 在使用输入器件之前、必须将其地址设置为指针'xfunc_in"以使其 swich 输入器件。 例如  xdev_in (uart2_getc); 输入函数将从 xgets 函数调用。 通常、此函数从输入器件或文件中读取一个字节。 但是、当器件报告数据流结束时、输入函数应返回0。 xgets 函数在流末尾以零中止、应用程序将能够检测到它。 xfgets 函数使用其参数覆盖默认输入器件。"

但我很难找到只返回或传递 char 作为其参数的 get_char 和 put_char 函数。 有人建议我在主例程中使用这些命令...

xDEV_OUT (UARTCharPut);//将输出管道设置为 UART char Put 函数
xDEV_IN (UARTCharGet);//将输入管道设置为 UART char Get 函数 

但它们不起作用、因为参数是错误的。

是否有将起作用的简单 Put_char 和 get_char 命令以及它们位于哪个库中? 此外、如果我将 UART0用于类似这样的文本 I/O ...

UARTStdioInit (0);
IntRegister (INT_UART0、UARTStdioIntHandler);


这是否与简单的 get_char / put _char 命令共存?

提前感谢。

ps、随 FatFs v013b 提供的 xprintf.h 库文件定义了 xDEV_OUT 和 xDEV_IN 函数、如下所示... 

define xDEV_OUT (func) xfunc_out =(void (*)(unsigned char))(func)
#define xDEV_IN (func) xfunc_in =(unsigned char (*)(void))(func)

是否有用

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    TED、

    它看起来没有确切的函数。 您将需要创建自己的。

    只需查看 elmChan ffsample.zip 中的示例、UART_getc 和 UART_putc 函数就非常基本、格式如下:
    void UART_putc (字节 d){}
    字节 UART_getc (void){}

    UARTStdioInit(0)调用只初始化模块、您需要先初始化该模块、UART 才能工作。
    我不认为注册中断是您希望用于此应用程序的东西。 它是手动操作的、中断可能会在系统中投一把扳手。 它看起来与其他示例不像为 UART 启用了中断。

    -Mark
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Mark、

    我按照您的建议编写了自己的函数...

    void TEDcharPut (unsigned char tedsChar)// TM 包装程序函数使 xdev 命令有效

    UARTCharPut (UART0_BASE、tedsChar);


    然后将 xDEV_OUT 函数指向我的新函数、如下所示...

    xDEV_OUT (TEDcharPut);//将输出管道设置为 UART 字符输出函数

    这起作用了。 我还有很多工作要做、但我将放弃使用控制台输入的 SD_CARD.c、并返回到您建议的简单 UART 功能。 感谢你的帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我很高兴这个项目正在进行中! 随时向我们提供最新信息。