Part Number:LAUNCHXL-CC26X2R1
UART读数据为回调方式,当串口输入数据时,并没有效果
//UART读取回调函数。修改灯状态
void uart_read_datdCB(UART2_Handle handle, void *buf, size_t count, void *userArg, int_fast16_t status)
{
static int flag = 0;
flag = ~flag;
GPIO_write(CONFIG_GPIO_LED, flag);
}
//UART初始化
void uart_init2(void)
{
UART2_Params params;
UART2_Params_init(¶ms);
params.baudRate = 115200;
params.writeMode = UART2_Mode_BLOCKING;
params.readMode = UART2_Mode_CALLBACK;
params.readCallback = &uart_read_datdCB;
// Open the UART
uart = UART2_open(CONFIG_UART2_0_CONST, ¶ms);
if (uart == NULL) {
// UART2_open() failed
while (1);
}
// Enable receiver, inhibit low power mode
UART2_rxEnable(uart);
uint8_t buffer_tmp[] = "UART2 init ok\r\n";
UART2_write(uart, buffer_tmp, sizeof(buffer_tmp), NULL);
}
Alex Zhang:
您好,建议从以下几个方面去查找问题;
1,进行debug看您这边串口是否可以读到数据
2,回调函数是否未注册成功 在初始化参数中将回调函数分配给readCallback字段是正确的方式。但是如果该回调函数未正确注册,则不会在接收数据时执行该回调函数。请确保在程序中正确地注册回调函数并且没有发生错误。
3,检查led初始化程序是否有问题
,
DaZhuang:
1、如何DEBUG查看串口是否收到数据?
2、读数据的回调函数只是改变灯状态,回调函数本身没错误
设置读取方式为callback,并注册params.readCallback = &uart_read_datdCB,然后只要UART2_open成功即认为回调正确注册,对吧。
3、LED是正常的,因为放到别处调用没问题
,
DaZhuang:
或者您方便能给我一份读回调的Demo吗?
,
Alex Zhang:
1.您这边使用ccs编译器,debug程序,会自动运行,然后打开view 选中expression双击变量粘贴到右上角的界面即可看到该变量的数值变化。
,
Alex Zhang:
您这边可以参考以下链接
dev.ti.com/…/ble_connections.html