工具与软件:
您好!
目前我正在处理示例 basic_ble 外设配置文件项目。
#define UART_MAX_READ_SIZE 248 //MTU exchange value
uint8_t uartReadBuffer[UART_MAX_READ_SIZE];
void UART_Init()
{
/* Create a UART in CALLBACK read mode */
UART2_Params_init(&uartParams);
uartParams.readMode = UART2_Mode_CALLBACK;
uartParams.readCallback = UARTCallback;
uartParams.readReturnMode = UART2_ReadReturnMode_PARTIAL;
uartParams.baudRate = 115200;
uartParams.eventCallback = UARTEventCallback;
uartParams.eventMask = UART2_EVENT_OVERRUN;
uart = UART2_open(CONFIG_UART2_0, &uartParams);
if (uart == NULL)
{
/* UART2_open() failed */
while (1)
{
}
}
// Setup an initial read
UART2_read(uart, &uartReadBuffer, UART_MAX_READ_SIZE, 0);
}
void UARTCallback(UART2_Handle handle, void *buffer, size_t count, void *userArg, int_fast16_t status)
{
uartPacketSize = count;
BLEAppUtil_invokeFunction(HandlingFunction,buffer);
}
typedef struct
{
uint8_t pkt_len;
uint8_t *data;
}api_data;
void HandlingFunction(char *pData)
{
api_data *api_pkt_ptr = (api_data*)uartReadBuffer;
uint16_t datalen = uartPacketSize;
SimpleGattProfile_setParameter(SIMPLEGATTPROFILE_CHAR4, RemainDataLen,&uartReadBuffer[datalen]);
memset(&uartReadBuffer[0], 0, sizeof(UART_MAX_READ_SIZE));
UART2_read(uart, uartReadBuffer, UART_MAX_READ_SIZE, 0);
}
在从模块向移动设备发送248字节时、在移动设备中以单个数据块接收248 (MTU 交换值)。 如果我从 模块向移动设备发送250字节、则 在移动设备中以 单个块248 (MTU 交换值)接收剩余2个字节的数据将 不会接收。 这2个字节将在下一次数据包发送时接收。 其中 这2个字节没有发生 UART 读取回调。
不发生多达16字节的 UART 读取回调。 如果进行的回调字节多于16字节。
SDK 版本:simplelink_lowpower_f3_sdk_8_10_01_02 (外设)
CCS 版本:CCS 12.7.1
谢谢!
Vignesh。

