经试验,应该是默认设置造成蓝牙发送或接收数据时,CPU会停机(halt),即相当于初始化时执行了:
HCI_EXT_HaltDuringRfCmd(HCI_EXT_HALT_DURING_RF_ENABLE);
可以在与从机连接前执行:
HCI_EXT_HaltDuringRfCmd(HCI_EXT_HALT_DURING_RF_DISABLE);
这样可以解决Tiner3或Timer4的问题。如有需要,在完成连接后再执行:
HCI_EXT_HaltDuringRfCmd(HCI_EXT_HALT_DURING_RF_ENABLE);
以上虽解决了Tiner3或Timer4的问题,但Timer1的不同表现又是为什么?从协议栈的hal_timer.c的说明里,可以认为Timer1,Timer3,Timer4应该可以完全由用户使用,出现这种差别应该是用户不可更改的代码中的工作机制带来的差异,这种差异会不会带来潜在的问题?
经试验,应该是默认设置造成蓝牙发送或接收数据时,CPU会停机(halt),即相当于初始化时执行了:
HCI_EXT_HaltDuringRfCmd(HCI_EXT_HALT_DURING_RF_ENABLE);
可以在与从机连接前执行:
HCI_EXT_HaltDuringRfCmd(HCI_EXT_HALT_DURING_RF_DISABLE);
这样可以解决Tiner3或Timer4的问题。如有需要,在完成连接后再执行:
HCI_EXT_HaltDuringRfCmd(HCI_EXT_HALT_DURING_RF_ENABLE);
以上虽解决了Tiner3或Timer4的问题,但Timer1的不同表现又是为什么?从协议栈的hal_timer.c的说明里,可以认为Timer1,Timer3,Timer4应该可以完全由用户使用,出现这种差别应该是用户不可更改的代码中的工作机制带来的差异,这种差异会不会带来潜在的问题?
举报