在BLE已成功连接后,OSAL中的一个事件运行时间过长,会导致BLE连接断开,无法正常通信,请问有什么方法可以解决这个问题?
这个事件不能用定时器代替,是一个需要较长时间处理的子程序,可以用延时来代替进行模拟:
HalLcd_HW_WaitUs(3000); //延时一秒钟
void HalLcd_HW_WaitUs(uint16 microSecs)
{
while(microSecs–)
{
/* 32 NOPs == 1 usecs */
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop");
}
}
Barbara Wu:
能否将子程序分开成比较小的处理程序来处理