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.

[参考译文] RTOS/CC2642R:UART 回调模式不工作

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/778744/rtos-cc2642r-uart-callback-mode-not-working

器件型号:CC2642R

工具/软件:TI-RTOS

您好!

我的设计中的两个 UART 都连接了外设。 我所面临的问题是、即使 UART RX/TX 线路正在接收/发送数据、也不会触发 UART 中断(我已使用范围进行确认)。 初始化任何 UART 的函数如下所示:

void SimplePeripheral_uartOpen(){
   UART_Params_init (&UART_params);
   UART_params.readMode = UART_MODE_CALLACK;
   UART_params.readCallback = Read_UART_CB;
   UART_params.readDataMode = UART_DATA_BINARY;
   UART_params.readReturnMode = UART_return_full;
   UART_params.readEcho = UART_ECHO_OFF;
   UART_params.波特 率= 115200;
   UART_params.stopbits = UART_STOP_ONE;
   UART_params.parityType = UART_PAR_NONE;
   UART_params.dataLength = UART_LEN_8;

   UART = UART_OPEN (CC26X2R1_MYDEVICE_UART0、&UART_params);

   //memset (uart_buf、0、sizeof (uint8_t)* BUF_SZ);

   if (UART == NULL){
       //此处发送错误
       UART_ERROR = 1;
       返回;
   }
   UART_CONTROL (UART、UARTCC26XX_RETURE_PARTIAL_ENABLE、空);

除非我继续在无限循环中轮询 UART_READ(),否则永远不会调用"READ_UART_CB"。 如何使用中断而不是低效轮询来调用 READ_UART_CB?

我使用的是 SimplePeripheral 示例项目和 simplelink_cc26x2_sdk_2_20_00_36 SDK 版本。 我还在使用 Code Composer。

谢谢你。

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

    我建议更新到 SDK 的最新版本。  此外、您能否更新代码片段以尝试并执行此处所示的阻止版本

    然后转到同样介绍的回调用例:

    静态空 taskFxn (uintptr_t a0、uintptr_t A1)
    {
    UART_Handle 句柄;
    UART_Params 参数;
    //初始化 UART
    UART_INIT();
    //指定非默认参数
    UART_PARAMS_INIT (params);
    params.baudrate = 9600;
    Params.writeMode = UART_MODE_CALLACK;
    params.writeDataMode = UART_DATA_BINARY;
    params.writeCallback = writeCallback;
    Params.readMode = UART_MODE_CALLACK;
    params.readDataMode = UART_DATA_BINARY;
    params.readCallback = readCallback;
    //打开 UART 并启动第一次读取
    句柄= UART_OPEN (Board_UART、params);
    wantedRxBytes = 16;
    int rxBytes = uart_read (handle、rxBuf、wantedRxBytes);
    while (true);//永远等待
    } 

    此致、

    Chris

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

    感谢您的回答。 我有一些问题需要做您建议的事情:
    1.较新的 SDK 无法与我的 SoC 修订版配合使用。 我有 CC2642R1的修订版 C、它不支持修订版 E 的最新 SDK
    2、永远的等待不能发生'因为我在这个任务上还有其他的事情发生。 您是否建议我创建第二个任务并添加到系统中? 您是否有参考代码、我可以查看以实现它?

    谢谢、

    Anderson
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对这种混乱表示歉意。 我了解到版本 C 将不受支持、请按此处所述将您的系统升级到版本 E 芯片。

    e2e.ti.com/.../767774

    此致、
    Chris