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.

[参考译文] CC2650STK:UART 回调模式

Guru**** 2465110 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/871705/cc2650stk-uart-callback-mode

器件型号:CC2650STK

大家好、我需要有关 UART 的帮助。  

UART_write()由计时器每隔1秒执行一次。 UART_READ()处于回调模式,并且在每个 UART_WRITE()之后触发,我不明白为什么。
UART_read()必须独立于 UART_write()工作。  

我尝试使用不同的数组进行读取和写入、但它不起作用。

感谢您的任何帮助。  

void se_func()
{

}

void readCallback (UART_Handle Uhandle、void *rxBuf、size_t size)
{
EVENT_POST (eventh、UART_RX_COMPLETE);
}

void clock_CB (UARg arg)
{
EVENT_POST (eventh、timer);
}

void taskFxn (UARg arg0、UARg arg1)
{
eventh = Event_create (NULL、NULL);

UART_Params_init (&Uparams);
Uparams.writeDataMode = UART_DATA_TEXT;
Uparams.readDataMode = UART_DATA_TEXT;
Uparams.readMode = UART_MODE_CALLACK;
Uparams.readEcho = UART_ECHO_OFF;
Uparams.readCallback = readCallback;
Uparams.baudrate = 9600;
Uhandle = UART_open (0、&Uparams);
UART_CONTROL (Uhandle、UARTCC26XX_CMD_RETURE_PARTIT_ENABLE、NULL);

UART_READ (Uhandle、buff、10);


Clock_Params_init (&clockParams);
clockParams.arg =(UArg)强度;
clockParams.startFlag = 0;
clockh = Clock_create ((Clock_Functr)&clock_CB、100000、&clockParams、NULL);
clock_start (clockh);


uint8_t 计数器= 0x0;
uint16_t 事件;

while (true)
{
事件= Event_pend (eventh、Event_ID_none、0xFFFFFFFF、BIOS_WAIT_FOREVE);

IF (事件和 UART_RX_COMPLETE)
{
some _func();
Task_sleep (10000);
UART_READ (Uhandle、buff、10);
}

IF (事件和计时器)
{
COUNTER++;
buff [0]=计数器;

UART_WRITE (Uhandle、buff、1);
Task_sleep (10000);
Clock_start (clockH);
}

}

此致、eGor

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

    您好、Egor、

    您能否详细说明一下" 我不明白为什么。
    UART_READ()必须独立于 UART_WRITE ()工作"。 更确切地说、您是否希望对写入和读取使用相同的缓冲区?

    写入和读取是两个异步操作、它们不相互依赖、因此它们独立工作。 如果您需要它们彼此同步工作、则可以通过同步它们来实现。  

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

    您好、M-W、

    在每个 UART_write()之后, readCallback 触发。

    我不希望 这种情况发生。 无论我是使用一个缓冲器进行接收和发送、还是使用不同的缓冲器、都会发生这种情况。

    只能在收到消息时使用 readCallback  

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

    您好、Egor、

    当您使用部分返回时、即使未接收到数据、也会触发读取回调。 例如、如果出现错误或接收超时、就会出现这种情况。 我建议您将 UARTCC26XX.c 驱动程序源代码拉到项目中、并在 UARTCC26XX_hwiIntFxn()内放置一个断点、以查看您是否收到 UART 错误、超时或接收。  

    我还建议您对 RX 和 TX 信号进行范围检查、以验证它们之间是否没有连接。