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.

[参考译文] CCS/MSP432P401R:多次写入 UART

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/940492/ccs-msp432p401r-uart-write-multiple-times

器件型号:MSP432P401R

工具/软件:Code Composer Studio

您好!  

我正在使用 UART.h 驱动程序、我希望能够一个接一个地写入单个命令。 例如...  

uint8_t stopText[13]={0xA5、0x5A、0x0A、0x82、0x01、 0xF2、0x53、0x54、0x4f、
0x50、0x50、0x45、0x44};
uint8_t stopColor[8]={0xA5、0x5A、0x05、0x82、0x40、 0x03、0x88、0x02};

UART_WRITE (UART、stopText、 sizeof (stopText);
UART_write (UART、stopColor、sizeof (stopColor)); 

当我拥有这组命令时、会遇到第二个 UART_WRITE 未写入的问题。  

我的 UART 初始化在一个任务中运行,如下所示:  

void uartRxFxn (UArg a0、UArg A1){
//初始化 UART
UART_INIT();
//指定非默认参数
UART_PARAMS_INIT (uartParams);
uartParams.baudrate = 9600;
uartParams.writeMode = UART_MODE_CALLACK;
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.writeCallback = writeCallback;
uartParams.readMode = UART_MODE_CALLACK;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readCallback = readCallback;
uartParams.readReturnMode = UART_return_full;

//打开 UART 并启动第一次读取
UART = UART_OPEN (CONFIG_UART_0、uartParams);
UART_WRITE (UART、测试仪、sizeof (tester));
wantedRxBytes=9;
int rxBytes = uart_read (UART、rxBuf、wantedRxBytes);
}

请提供帮助、因为我不必为我要发送的每一个命令组合创建一条长消息、这是非常不容易的。  

谢谢!

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

    [引用 user="Adam Reid]当我拥有这组命令时、我遇到第二个 UART_WRITE 未写入的问题。  

    我的 UART 初始化在一个任务中运行,如下所示:  

    UART 初始化使用 UART_MODE_CALLBACK 作为写模式。

    代码显示了两个对 UART_WRITE 的背靠背调用、与回调函数没有任何交互。

    UART_WRITE 文档 具有:

    [引用]在 UART_MODE_CALLBACK 中,UART_WRITE()不会阻止任务执行。 相反、传输完成后会调用由 UART_Params::writeCallback 指定的回调函数。[/quot]如果不查看 UART 驱动程序代码、我不确定  在 UART_MODE_CALLBACK 中调用 UART_WRITE 时、如果之前的 UART_WRITE 尚未完成对 UART 的写入、会发生什么情况。

    如果将 writeMode 更改为 UART_MODE_Blocking、则对 UART_WRITE 的调用将会阻止、直到缓冲区中的所有数据都已写入。

    您的代码是否出于 特定原因需要使用 UART_MODE_CALLBOACK?