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.

[FAQ] [参考译文] [常见问题解答] LP-EM-CC2340R5:指南:向 uart2echo 示例添加 EventMask 和 eventCallback 支持

Guru**** 1624165 points
Other Parts Discussed in Thread: LP-EM-CC2340R5, CC2340R5
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1309887/faq-lp-em-cc2340r5-guide-adding-eventmask-and-eventcallback-support-to-uart2echo-example

器件型号:LP-EM-CC2340R5
主题中讨论的其他器件: CC2340R5

以下详细信息介绍了如何修改 uart2echo SDK 示例、以在 LP-EM-CC2340R5上启用事件屏蔽和事件调用溢出。

摘要:

通过在 uart2echo 示例中实现以下代码片段、您将能够检测何时发生了溢出事件、跟踪总的溢出事件以及在发生溢出事件时看到绿色 LED 切换。  

步骤:

  1. 在 CCS 中、导入   SDK ...\examples\rtos\LP_EM_CC2340R5\drivers 下的 uart2echo 示例。
  2. 进入 uart2echo.syscfg、在"TI 驱动程序 "中点击 GPIO 并添加 CONFIG_GPIO_GLED;将硬件配置为 LaunchPad LED 绿色 以使用电路板上的绿色 LED。  
  3. 在 uart2echo.c 文件中、定义全局变量以供稍后使用。  

/* Declare global variables */
uint32_t glostat = 0; //stat to check the total numver of overrun events 
uint32_t glostatnot = 0;
uint8_t uhOh = 0; //flag to check if overrun event has occurred 

    4.按照与红色 LED 类似的方式设置绿色 LED 配置  

GPIO_setConfig(CONFIG_GPIO_GLED, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);

    5.在 mainThread 的  uartParams  段(在 UART 打开之前)中定义 eventCallback EventMask

    uartParams.eventCallback = eventcallbackFxn; 
    uartParams.eventMask     = UART2_EVENT_OVERRUN; 

    6.设置  eventcallbackFxn、 此函数将在发生溢出事件时发生、并将切换绿色 LED、以及通过递增  globstat 跟踪当前的溢出事件总数;  我们还会更改 uhOH  标志的状态以指示已发生溢出事件(稍后使用)。  

/*
 * ======== eventcallbackFxn ========
 */
void eventcallbackFxn(UART2_Handle handle, uint32_t event, uint32_t data, void *userArg)
{
    if (event == UART2_EVENT_OVERRUN) //check if the event is overrun event 
    {
        //UART2_flushRx(uart);
        glostat++;
        uhOh = 1;
        GPIO_toggle(CONFIG_GPIO_GLED); //if its valid this should still work.
    }
    else
    {
        glostatnot++;
    }

}

     7.在 mainThread 中、在 while (1) 循环中添加以下代码、该代码将在读取特定数量的字节或检测到溢出事件(通过  uhOH  标志)时清除 FIFO 缓冲区。  

 if(numBytesRead > 64)
{
    UART2_flushRx(uart);
}
if(uhOh)
{
    uhOh = 0;
    const char overrunPrompt[] = "\r\nOverrun Event Occurred, clearing RX buffer:\r\n";
    UART2_write(uart, overrunPrompt, sizeof(overrunPrompt), NULL);
    UART2_flushRx(uart);
}

    8.构建、加载并运行程序,使用 PuTTY 连接到设备,然后通过输入太多字符,您将看到溢出事件的执行,并看到您的电路板上的绿色 LED 切换。   

此示例在7_40_00_64 SDK 的 CCS 12.5上进行了评估。