首先是在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阶段就会卡住然后连接超时。
请帮忙分析一下原因