本帖最后由 we_2946009406 于 2025-3-27 16:12 编辑
·背景:蓝牙指令通过泰凌微mesh/main.c中的 irq_handler() 中的 irq_blt_sdk_handler() 接收蓝牙指令,解析自定义数据包放在主循环的loop中,解析完后执行对应应用层的for循环
·问题:当for循环过长时,尽管在中断中已接收到蓝牙指令,但需要等待当前应用层的for循环结束后,运行到下一轮的主循环loop时,才能解析新的数据包,执行新的for循环。尝试添加全局标志位,在for循环中若判断到标志位置位则退出循环。测试了app.c中的 app_event_handler() 、mesh_common.c中的 mesh_rc_data_layer_access_cb(),均可以顺利判断并置位标志位,但该回调函数似乎不能打断主循环,因此同样需要等待for循环结束才能让标志位置位
·需求:是否有可以打断主循环的函数能让我判断在里面判断一下蓝牙数据包的opcode,用于中断形式地置位标志位 |