fix(vd960DBN): MQTT CONNECT 改回中断上下文发送, 消除 SocketSend hard fault
root cause: WCHNET SocketSend 在中断上下文外调用会 hard fault。 旧代码 mqtt_connect() 在 WCHNET_HandleSockInt CONNECT 中断里直接调; v4 改成了延后到主循环 iot_mqtt_poll() 里发 → hard fault fix: iot_mqtt_handle_sock_int 的 CONNECT 分支直接调用 iot_mqtt_send_connect() (对齐旧代码行为), 不再延后到 poll
This commit is contained in:
@@ -792,12 +792,14 @@ static void iot_connect_broker(void) {
|
||||
void iot_mqtt_handle_sock_int(uint8_t socketid, uint8_t intstat) {
|
||||
if (socketid != g_iot_socket) return;
|
||||
|
||||
/* CONNECT 成功 — 仅标记状态, WCHNET_HandleSockInt 已设好 RecvBuf 和 KeepLive */
|
||||
/* CONNECT 成功 — 在中断上下文直接发 MQTT CONNECT
|
||||
(对齐旧 mqtt_connect 行为: WCHNET SocketSend 在中断外会 hard fault) */
|
||||
if (intstat & SINT_STAT_CONNECT) {
|
||||
PRINT("IOT: TCP connected (sock=%d)\n", socketid);
|
||||
g_iot_state = IOT_STATE_TCP_CONNECTED;
|
||||
_iot_recv_len = 0;
|
||||
// 不在此发送 CONNECT,等下一轮 iot_mqtt_poll 处理
|
||||
iot_mqtt_send_connect(); // 在中断上下文发, 不延后到 poll
|
||||
g_iot_state = IOT_STATE_MQTT_CONNECTING;
|
||||
}
|
||||
|
||||
/* 收到数据 */
|
||||
|
||||
Reference in New Issue
Block a user