请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:AM2434尊敬的团队:
代表我们的客户发帖。
我们正在开发一个工业协议模块。 在此之前、我们使用 LP 板来测试其性能。
我在实现产品的 UART 层时遇到了问题。
UART 的 TX 和 Rx 都使用回调函数作为中断。
RX 函数中发生了问题。
初始化如下所示:
UART_Transaction_init (&rx_trans);
--------------------------------------------------------------------------------
静态 UART_Transaction rx_trans; /*可全局验证*/
--------------------------------------------------------------------------------
int32_t 状态;
Terr t_ret = ER_OK;
UART_Transaction_init (&rx_trans);
pfUART1RxCallback = pf_callback;
RX_TRANS.buf =&u8Ch1Buf;
RX_TRANS_COUNT = sizeof (u8Ch1Buf);
Status = UART_Read (gUartHandle[CONFIG_UART_CONSOLE]、&rx_trans);
if (status!= UART_STATUS_SUCCESS){
DebugP_LOG(“UART_read failed2:%d\n“、STATUS);
}
返回 t_ret;
--------------------------------------------------------------------------------
在初始化中使用 UART_READ API 函数时、状态值作为 UART_STATUS_SUCCESS 返回、指示正常运行。
--------------------------------------------------------------------------------
int32_t 状态;
uint32_t gNumBytesRead = 0U;
if (NULL != pfUART1RxCallback)
{
pfUART1RxCallback (&u8Ch1Buf、sizeof (u8Ch1Buf));
}
trans.buf =&u8Ch1Buf;
Transger.count = sizeof (u8Ch1Buf);
Status = UART_READ (gUartHandle[CONFIG_UART_CONSOLE]、&TRANS);
if (status!= UART_STATUS_SUCCESS){
DebugP_LOG(“UART_read failed1:%d\n“、STATUS);
}
if (gUartHandle[CONFIG_UART_CONSOLE]= NULL)
{
DebugP_LOG(“UART 句柄 NULL!\n“);
}
返回;
--------------------------------------------------------------------------------
在回调函数中、一个中断仅发生一次、UART_read 函数的返回值为“-1",–1,并且“并且不、不会再发生中断。
为什么会发生这种情况? 请提出理由和解决方案。
此致、
Danilo