工具/软件:Code Composer Studio
大家好、
我在开发板上运行项目0、并且遇到了 UART RX INT 问题
这是设置
初始化时:
UART_INIT();
//初始化 UART 参数
UART_PARAMS_INIT (&Bottom_COM_PARAMS);
Bottom_Params.baudrate = c_top_Budrate;
Bottom_Params.readMode = UART_MODE_CALLBACK; //UART_MODE_BLOCKING
Bottom_Params.writeMode = UART_MODE_CALLBACK;
Bottom_Params.readTimeout = UART_WAIT_FOREVER; //UART_WAIT_FOREVER;
Bottom_Params.writeTimeout = UART_WAIT_FOREVE;
Bottom_Params.writeCallback =发送字节;
Bottom_Params.readCallback = Byte_Received;
Bottom_Params.readDataMode = UART_DATA_BINARY;
Bottom_Params.writeDataMode = UART_DATA_BINARY;
Bottom_Params.readReturnMode = UART_return_full;
//打开 UART
Bottom_handle = UART_OPEN (Bottom_UART、&Bottom_COM_PARAMS);
prx =&RX_Buffer[0];
bytes_received = 1;
UART_READ (Bottom_com_handle、prx、bytes_received);
在 RX 回叫中、超时计时器启动、该计时器设置一个标志、指示数据已接收
void RXTimeout (UARg ID){
TIMEOUT_ON = false;
RX_Received = true;
}
void Byte_received (UART_Handle handl、void *buf、size_t count){
//设置和启动 COM 超时计时器
if (Timeout_on =false){
Util_startClock ((Clock_Structt *) TimeOutHandle);
TIMEOUT_ON = true;
}
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
此设置非常适合 TX INT、我在 X 缓冲区中放置一个字节、它将被传输、在 TX int 中它将获得下一个字节... 等等。
RX INT 有问题
设置
bytes_received 到0不会设置 INT,调用函数 Byte_Received()永远不会被调用!
----
bytes_received 更改为1设置 INT,调用回调函数 Byte_received()!
但是、当涉及到时
ReceivedFromUART = UART_READ (Bottom_COM_Handle、prx、i);
第一个字节丢失了?!!! ReceivedFromUART 始终为0!!! 但是 prx[]缓冲区中有所有的字节,第一个字节除外
这是否是 UARTCC26XX.c 文件中的错误?
我不明白为什么仅使用 UARTCC26XX_READ (xxx)设置 RX INT;
感谢你的帮助
此致
Kurt