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.

[参考译文] AM2434:UART RX ISR ISSU

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1581818/am2434-uart-rx-isr-issu

器件型号: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