您好,
我有一个关于 KW47 SDK 中的 BluetoothLEHost_Init() 的问题。
我的应用程序运行在 FreeRTOS 上,并且预先使用 xTaskCreateStatic() 创建了几个任务。
创建这些任务后,我调用 BluetoothLEHost_Init() 来初始化 BLE。在逐步调试 SDK 的过程中,我观察到在与 NBU 通信期间,初始化过程会等待任务间事件。因此,其他优先级较低的任务会被安排并在 BluetoothLEHost_Init() 仍在执行且函数调用本身返回之前开始运行。
需要澄清的是,我指的不是提供给 BluetoothLEHost_Init() 的主机初始化完成回调。我不需要等待回调。
我担心任务切换发生在 BluetoothLEHost_Init() 返回之前。我希望阻止其他应用程序任务运行,直到 BluetoothLEHost_Init() 函数调用本身返回为止。
我的问题是:
・是否有任何配置、API 或推荐的方法来防止在 BluetoothLEHost_Init() 执行期间(例如,在等待 NBU 通信期间)发生任务切换?
・有没有办法确保 BluetoothLEHost_Init() 完成并返回,而不将执行权让给其他任务?
・如果存在这样的方法,能否请您提供指导或推荐方法的示例?
我的目标是确保在 BluetoothLEHost_Init() 返回之前,任何应用程序任务都不会开始正常处理。
任何建议都将不胜感激。
嗨@t_hosomi ,希望你一切都好。
您可以使用以下所述的不同 FreeRTOS 方法来暂停其他任务的执行:
对于这两种选择,我都建议参考FreeRTOS 参考手册;对于第二种选择,您可以参考 SDK 中的“freertos_event_cm33_core0”示例,因为它演示了如何创建事件组和设置任务以等待事件。
请告诉我这些信息是否符合您的要求。