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.
工具/软件: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?