各位专家:
我正在尝试在没有信标的情况下实现 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