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.

[参考译文] LAUNCHXL-CC1352R1:如何在不使用信标的情况下以回调方式读取 UART 数据

Guru**** 2484615 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1194924/launchxl-cc1352r1-how-to-read-uart-data-in-callback-without-semaphore

器件型号:LAUNCHXL-CC1352R1

各位专家:

我正在尝试在没有信标的情况下实现 uartcallback、以下代码不会读取可用的 UART 数据、请告诉我如何执行此操作... 如果我使用同样等待 UART 数据的 UART 回波、这也不会从 uartbackline 退出、在 uartcallback 示例中、在信标中等待、它也在等待信标发布、我已经在 UART 回波示例中尝试了 UARTreadtimeout 函数、它不能按预期工作、 信标挂起和信标超时函数也不能按预期工作、  

我尝试以5秒的间隔向 UART 发送数据、在数据可用时打印 UART 数据、否则我的器件只以5秒的间隔发送 UART 数据...

请告诉我如何执行上述功能...

/*
*==== uart2callback.c ===
*
#include
#include

/* POSIX 头文件*/
#include

/*驱动程序头文件*/
#include
#include

/*驱动程序配置*/
#include "ti_drivers_config.h"

静态 SEM_t SEM;
静态易失性 size_t numBytesRead;
字符输入[100];

/*
*==== callbackFxn ====
*
void callbackFxn (UART2_Handle handle、void * buffer、size_t count、void * userArg, int_fast16_t status)

numBytesRead = count;
/*对 bytesRead 传递 NULL,因为它未在本示例中使用*/
status = UART2_read (handle、&input、numBytesRead、NULL);

if (status!= UART2_STATUS_SUCCESS)

/* UART2_READ()失败*/
while (1){}

//SEM_post (&SEM);

/*
*==== mainThread ====
*
void * mainThread (void * arg0)

const char echoPrompt[]="回显字符:\r\n";
UART2_Handle UART;
UART2_Params uartParams;
int32_t semStatus;
uint32_t status = UART2_STATUS_SUCCESS;

/*调用驱动程序初始化函数*/
GPIO_init();

/*配置 LED 引脚*/
GPIO_setConfig (CONFIG_GPIO_LED_0、GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);

/*在回调读取模式下创建 UART */
UART2_Params_init (uartParams);
uartParams.readMode = UART2_Mode_callback;
uartParams.readCallback = callbackFxn;
uartParams.baudrate = 115200;

UART = UART2_open (CONFIG_UART2_0、uartParams);

如果(UART == NULL)

/* UART2_open()失败*/
while (1){}

/*打开用户 LED 指示初始化成功*/
GPIO_WRITE (CONFIG_GPIO_LED_0、CONFIG_GPIO_LED_ON);

/*对 bytesWritten 传递 NULL,因为它未在本示例中使用*/
UART2_WRITE (UART、echoPrompt、sizeof (echoPrompt)、NULL);

/*循环永久回显*/
while (1)

UART2_WRITE (UART、echoPrompt、sizeof (echoPrompt)、NULL);


如果(numBytesRead >0)

STATUS = UART2_WRITE (UART、&INPUT、numBytesRead、NULL);

if (status!= UART2_STATUS_SUCCESS)

/* UART2_write()失败*/
while (1){}

numBytesRead = 0;

GPIO_TOGGLE (CONFIG_GPIO_LED_0);
睡眠(5);

此致

Surya

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

    感谢您的支持、它正在运行...

    此致

    Surya