TI中文支持网
TI专业的中文技术问题搜集分享网站

关于范例simple_peripheral_oad_offchip中添加新任务导致蓝牙连接超时

首先是在simple_peripheral_oad_offchip 的主任务中添加了新的功能函数实现,不知道是不是系统内存不够还是其他的原因,编译没问题下载到电路板上发现蓝牙连接超时的情况。   于是我在项目中添加了新任务,结果还是一样。

注:参照了该链接:http://processors.wiki.ti.com/index.php/Adding_BLE_Enabled_RTOS_Task#Demoing_the_Task

配置了app和stack的预定义 ICALL_MAX_NUM_TASKS=4 ICALL_MAX_NUM_ENTITIES=7 OSAL_MAX_NUM_PROXY_TASKS=3

创建任务代码:

void IRD_ReadScan_createTask(void){
    Task_Params taskParams;

    // Configure task
    Task_Params_init(&taskParams);
    taskParams.stack = IRDTaskStack;
    taskParams.stackSize = IRD_TASK_STACK_SIZE;
    taskParams.priority = IRD_TASK_PRIORITY;

    Task_construct(&IRD_Task, IRD_ReadScan_taskFxn, &taskParams, NULL);
}

static void IRD_ReadScan_taskFxn(UArg a0, UArg a1){

    // Register the current thread as an ICall dispatcher application
    // so that the application can send and receive messages.
    ICall_registerApp(&IRD_Entity, &IRD_Event);

    //…do someting

}

求各路大神解答!!!

user5065561:

我也遇到了这个情况,在Simple_Peripheral例程中添加了Uart_Task。串口能够正常进行读写,程序没有跑死

但是使用苹果LightBlue进行蓝牙连接提示Timeout  interrogating  the peripheral,对串口任务创建进行注释之后连接正常。

在IAR进行Debug时Gap_role回调函数中设置全局变量用Live Watch进行观察,发现设备进入Connected状态之后大约十几秒,然后重新回到Advertising状态。

其中Uart_Task的priority设置为2,Simple_Peripheral_Task的priority为1,两个任务的stackSize都为644。

再次声明:程序没有跑死,只有蓝牙连接超时。

请TI的专业工程师解答一下原因

Susan Yang:

回复 user5065561:

请您修改一下优先级设置,Uart_Task的priority设置为2,就表明串口的优先级是高于Simple_Peripheral_Task的。
另外建议您有问题重新发帖。

user5065561:

回复 Susan Yang:

您好,谢谢回复。我尝试着修改任务的不同优先级,但是依然不起作用。

无论Uart_Task和Simple_Peripheral_Task的任务优先级谁高,或者是一样高,还是遇到了连接超时的情况。

但是两个Task都能够正常运行(Uart_Task正常回复数据、Simple_Peripheral_Task正常实现IO高低电平切换闪灯),问题依然出在蓝牙连接方面。

苹果的LightBlue一般是先Connecting,然后interrogating。问题是当我采用这两个Task的时候,在Connecting阶段就会卡住然后连接超时。

请帮忙分析一下原因

赞(0)
未经允许不得转载:TI中文支持网 » 关于范例simple_peripheral_oad_offchip中添加新任务导致蓝牙连接超时
分享到: 更多 (0)