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/1194403/launchxl-cc1352r1-display-function-for-2nd-uart-not-working

器件型号:LAUNCHXL-CC1352R1
Thread 中讨论的其他器件:SYSBIOS

各位专家:

我尝试通过显示函数为第二个 UART 构建一个任务、并通过回调构建使用第一个(XDS) UART 的主任务、但以下代码不能按预期工作、因此请查看该代码并点击以查找缺失的点

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

/* POSIX 头文件*/
#include

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

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

//导入显示驱动程序定义
#include

#include
#include
#include

#define task_stack_size 512
#define task_priority 6.
/*任务的堆栈*/
uint8_t sbcTaskStack[task_stack_size];

/*任务对象(待构建)*/
Task_Structtask0;

静态 SEM_t SEM;
静态易失性 size_t numBytesRead;

const size_t RX_size = 128;
静态 uint8_t RX_COM1 [128];

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

if (status!= UART2_STATUS_SUCCESS)

/* UART2_READ()中出现 RX 错误*/
while (1){}

numBytesRead = count;
SEM_post (&SEM);

/*任务函数*/
空任务功能(UARg arg0、UARg arg1)

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

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

/*创建信标*/
semStatus = SEM_INIT (&SEM、0、0);

if (semStatus!= 0)

/*创建信标时出错*/
while (1){}

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

UART = UART2_open (CONFIG_UART2_1、uartParams);

如果(UART == NULL)

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

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

while (1)/*永远运行循环(除非终止)*/


/*对 bytesRead 传递 NULL,因为它未在本示例中使用*/
// status = UART2_read (UART、INPUT、1、NULL);
STATUS = UART2_READ (UART、&RX_COM1、RX_SIZE、NULL);

if (status!= UART2_STATUS_SUCCESS)

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

/*在执行读回调之前不要写入*/
SEM_WAIT (SEM);

如果(numBytesRead >0)

//status = UART2_WRITE (UART、INPUT、1、NULL);
STATUS = UART2_WRITE (UART、&RX_COM1、numBytesRead、NULL);

// Display_printf (handle、1、0、"您%s 的状态如何?"、RX_COM1);

if (status!= UART2_STATUS_SUCCESS)

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



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

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

Task_Params taskParams;

//配置任务
Task_Params_init (&taskParams);
taskParams.stack = sbcTaskStack;
taskParams.STACKSIZE = task_stack_size;
taskParams.priority = task_priority;

Task_construct(&task0、taskFunction、&taskParams、NULL);

BIOS_start();

//初始化可选的显示参数
Display_Handle handle;
Display_Params 参数;
Display_Params_init (&params);
//打开显示实现
Display_open (Display_Type_UART、params);
//输出到显示
Display_printf (handle、1、0、"Hello World");

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

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

如果(numBytesRead >0)

//Display_printf (handle、1、0、"您%s 是如何的?"、RX_COM1);
Display_printf (handle、1、0、"Hello World");
numBytesRead = 0;


此致

Surya

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

    你(们)好

    我已附上我的 syscfg.h 文件屏幕截图供您参考

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

    它在工作  

    谢谢你

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

    您好 Surya、

    您是否解决了问题?如何解决?

    此致、

    Arthur

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

    您好 Arthur 

    感谢您的回复、我忘记添加一个显示手柄、

    现在、当数据不可用时、从 UART2_READ 函数退出时出现一个问题、我已经尝试使用以下函数进行1秒钟的退出  

     STATUS = UART2_readTimeout (UART、&RX_COM1、RX_SIZE、&bytesRead、100000);

    但当 UART 数据可用时、它不会读取数据...

    注意:现在我 已经使用 UARTECHO 示例测试了 uart1。。。。 以及用于 uart0的 displayprintf

    此致

    Surya

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

    我尝试按时间间隔(5秒)将数据写入 UART、并在数据可用时读取 UART 数据...

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

    您好 Surya、

    我们将跟踪另一个主题: e2e.ti.com/.../launchxl-cc1352r1-how-to-read-uart-data-in-callback-without-semaphore

    其他问题。 然后、我将关闭这个。

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

    您好 Arthur

    好的、请在该主题上指导我完成问题...

    此致

    Surya