我希望使用 TI 显示驱动程序将 Display_printf()从 UART 中输出。 我让它工作。
我希望使用 UART2驱动程序来读取进入 UART 的字符。 我让它工作。
但是、两者不同时存在。 它是一个或另一个。 换言之,系统似乎不可能同时执行 Display_open()和 UART2_open(),即使前者仅用于将字节从 UART 中写入,后者则用于从 UART 中读取字节。 如何解决此约束?
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.
我希望使用 TI 显示驱动程序将 Display_printf()从 UART 中输出。 我让它工作。
我希望使用 UART2驱动程序来读取进入 UART 的字符。 我让它工作。
但是、两者不同时存在。 它是一个或另一个。 换言之,系统似乎不可能同时执行 Display_open()和 UART2_open(),即使前者仅用于将字节从 UART 中写入,后者则用于从 UART 中读取字节。 如何解决此约束?
注意:几个小时后、我终于到达了以下逻辑、似乎为我提供了我想要的东西。 这可以解决我的问题。
#include
#include
#include
#include "ti_drivers_config.h"
typedef void (* IncomingUartChar_CallBackType)(char IncomingUartChar);
display_handle display;//由各种 Display_printf()宏使用
静态 char rxBuf[20];
静态 IncomingUartChar_CallBackType CachedClientCallback;
静态空 uartRxCallback (UART2_Handle handle、void * buf、size_t count、void * userArg, int_fast16_t status)
{
/*注意:此回调在中断上下文中运行。 *
memcpy (rxBuf、buf、count);
CachedClientCallback (rxBuf[0]);//将传入字符沿... *
UART2_READ (handle、&rxBuf、1、NULL);
}
空 SetupSystemPrintf (IncomingUartChar_CallBackType ClientCallback_ForAnyIncomingUartBytes)
{
{ //注:这样设置的目的是为了 Display_printf()将字节从 UART 中推出。 *
display_init();//需要自动派生的 ti_drivers_config.c 源文件的 Display_config 结构。
Display = Display_open (Display_Type_UART、NULL);
}
{ //注:此处我们调整了 Display_open()设置的 UART,例如更改读取
将模式更改为 UART2_Mode_callback 并设置 readCallback、以便我们可以查看
任何字符。 Display 驱动程序不关心传入
字符,因为它仅根据 Display_printf()将字符发送出去
调用。 但是、进入的字符是客户可能想要处理的内容;如果是
呼叫者提供了一个 ClientCallback、我们将在其上转发这些字符。 是的
用户在提供输入的外部终端窗口键入的字符
UART。
*
if (显示&& ClientCallback_ForAnyIncomingUartBytes){
CachedClientCallback = ClientCallback_ForAnyIncomingUartBytes;
DisplayUart2_Object *对象=(DisplayUart2_Object *)显示->对象;
UART2_Handle Uart2Handle = object->hUart;
UART2_Object* uart2Object = UART2Handle->object;
if (uart2Object){
uart2Object->readCallback = uartRxCallback;
uart2Object->state.readMode = UART2_Mode_callback;
{ /*使用 UART2_read()来进行主函数处理。 然后、每当第一个时
char 到达 readCallback()将保持运行。
*
UART2_READ (UART2Handle、&rxBuf、1、NULL);
}
}
}
}
}