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.

[参考译文] AM263P4:UART HLD–RxCallback 中的 UART_read () 函数

Guru**** 2422790 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1545816/am263p4-uart-hld-uart_read-function-in-rxcallback

器件型号:AM263P4


工具/软件:

您好、  

当我再次从 Rx 回调内部调用 uart_read () 时,回调只被调用一次(没有后续回调)。
当我 从任务/后台上下文调用 uart_read () 时,会按预期重复调用回调。 为什么? 我想在 rxcallback 函数中处理这种情况。

静态 UART_Transaction newTrans;
静态易失性 uint8_t rxBuf[8];

void UART_RX_Callback(UART_handle 句柄、UART_Transaction *事务)

UART_read (handle、&newTrans);
}

void UART_TX_Callback(UART_handle 句柄、UART_Transaction *事务)

}

void empty_main (void * args)

/*打开驱动程序以打开控制台的 UART 驱动程序*/
drivers_open();
BOARD_DRIVERSOpen ();

UART_Transaction_init (&newTrans);
newTrans.buf =(void *) rxBuf;
newTrans.count = 8;

UART_read (gUartHandle[CONFIG_UART0]、&newTrans);

while (1);
Board_driversClose();
drivers_close();
}

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

    您好 Burak、

    从应用架构的角度来看、最好通过主任务执行所有 UART_READ 和 UART_WRITE 相关事务。 SDK 中的示例代码处理通过信标的流程以阻止操作。  

    在这种情况下,当从主任务调用 uart_read () 时,您可以挂起信标,然后在回调函数中发布信标,然后在调用另一个事务时再次挂起。

    您能说明一下为什么要在读取回调中调用另一个 UART API 吗?  UART 回调函数应很短、以免干扰时序。

    此致、
    Shaunak