0x7743fcec 处未处理的异常: 0xC015000F: 正被停用的激活上下文不是最近激活的

本文介绍了一种在Visual Studio 2008中快速定位Win32异常的具体方法,通过简单设置即可有效提高调试效率。

在开发过程中出现了这个问题.参考了些网络上的资料.发现只要进行如此设置就可以定位到报错位置.


具体操作如下:

   VS2008Sp1里: 调试---->异常---->Win32 Exceptions  引发 勾选上.


Guru Meditation Error: Core 0 panic'ed (LoadProhibited). Exception was unhandled. Core 0 register dump: PC : 0x4202de6e PS : 0x00060430 A0 : 0x8201a791 A1 : 0x3fcebdb0 --- 0x4202de6e: lv_event_mark_deleted at D:/project/osg_voice_2.06/components/lvgl/src/misc/lv_event.c:217 A2 : 0x3fcb21b4 A3 : 0xffffc000 A4 : 0x3fcb2798 A5 : 0x00000000 A6 : 0x3fcde5ec A7 : 0xfffffff8 A8 : 0x0000003c A9 : 0x00000000 A10 : 0x3fcd5650 A11 : 0x00000000 A12 : 0x00000028 A13 : 0x00000004 A14 : 0x3fcde5ec A15 : 0x00000026 SAR : 0x0000001c EXCCAUSE: 0x0000001c EXCVADDR: 0x00000040 LBEG : 0x400570e8 LEND : 0x400570f3 LCOUNT : 0xffffffff --- 0x400570e8: memset in ROM --- 0x400570f3: memset in ROM Backtrace: 0x4202de6b:0x3fcebdb0 0x4201a78e:0x3fcebdd0 0x4217ad07:0x3fcebdf0 0x4217ad15:0x3fcebe10 0x4201f694:0x3fcebe30 0x4201f5e1:0x3fcebe50 0x4201f7cc:0x3fcebe70 0x4201316a:0x3fcebe90 0x42013771:0x3fcebeb0 0x4202ddb6:0x3fcebef0 0x4201b401:0x3fcebf10 0x4201b476:0x3fcebf30 0x42013a47:0x3fcebf70 0x4200e25b:0x3fcebf90 0x40387e61:0x3fcec090 --- 0x4202de6b: lv_event_mark_deleted at D:/project/osg_voice_2.06/components/lvgl/src/misc/lv_event.c:216 --- 0x4201a78e: lv_obj_destructor at D:/project/osg_voice_2.06/components/lvgl/src/core/lv_obj.c:518 --- 0x4217ad07: lv_obj_destruct at D:/project/osg_voice_2.06/components/lvgl/src/core/lv_obj_class.c:138 (discriminator 1) --- 0x4217ad15: lv_obj_destruct at D:/project/osg_voice_2.06/components/lvgl/src/core/lv_obj_class.c:145 --- 0x4201f694: obj_delete_core at D:/project/osg_voice_2.06/components/lvgl/src/core/lv_obj_tree.c:559 --- 0x4201f5e1: obj_delete_core at D:/project/osg_voice_2.06/components/lvgl/src/core/lv_obj_tree.c:524 --- 0x4201f7cc: lv_obj_clean at D:/project/osg_voice_2.06/components/lvgl/src/core/lv_obj_tree.c:100 --- 0x4201316a: ui_switch_screen at D:/project/osg_voice_2.06/components/u_ui/ui_init.c:2680 --- 0x42013771: back_btn_event_cb at D:/project/osg_voice_2.06/components/u_ui/ui_init.c:675 --- 0x4202ddb6: lv_event_send at D:/project/osg_voice_2.06/components/lvgl/src/misc/lv_event.c:77 --- 0x4201b401: event_send_core at D:/project/osg_voice_2.06/components/lvgl/src/core/lv_obj_event.c:367 --- 0x4201b476: lv_obj_send_event at D:/project/osg_voice_2.06/components/lvgl/src/core/lv_obj_event.c:67 --- 0x42013a47: glove_button_func at D:/project/osg_voice_2.06/components/u_ui/ui_init.c:2749 --- 0x4200e25b: gpio_task_example at D:/project/osg_voice_2.06/components/u_scan/scandev.c:113 --- 0x40387e61: vPortTaskWrapper at D:/ESP32_V5.3/esp_idf/v5.3/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/port.c:139
09-20
// BLEClient.cpp #include "BLEClient.h" #include <Arduino.h> // 静态成员定义 bool BLEClientHandler::doConnect[MAX_SLAVES] = {false}; BLEAddress* BLEClientHandler::pServerAddress[MAX_SLAVES] = {nullptr}; BLEClient* BLEClientHandler::pClient[MAX_SLAVES] = {nullptr}; BLEClientHandler* BLEClientHandler::instance = nullptr; BLEClientHandler* BLEClientHandler::getInstance() { if (instance == nullptr) { instance = new BLEClientHandler(); } return instance; } BLEClientHandler::BLEClientHandler() { instance = this; for (int i = 0; i < MAX_SLAVES; ++i) { pServerAddress[i] = nullptr; pClient[i] = nullptr; doConnect[i] = false; } } BLEClientHandler::~BLEClientHandler() { for (int i = 0; i < MAX_SLAVES; ++i) { if (pServerAddress[i]) { delete pServerAddress[i]; pServerAddress[i] = nullptr; } if (pClient[i] && !pClient[i]->isConnected()) { delete pClient[i]; pClient[i] = nullptr; } } } void BLEClientHandler::begin() { //Serial.println("初始化 BLE 主机并开始扫描..."); BLEDevice::init(""); BLEScan* pScan = BLEDevice::getScan(); pScan->setAdvertisedDeviceCallbacks(new AdvertisedDeviceCallbacks(this)); pScan->setActiveScan(true); pScan->start(5, false); // 扫描 5 秒 } void BLEClientHandler::AdvertisedDeviceCallbacks::onResult(BLEAdvertisedDevice advertisedDevice) { std::string name = advertisedDevice.getName(); int slave_id = -1; if (name.rfind("GMD1032-Slave-", 0) == 0) { char c = name[14]; if (c >= '0' && c <= '6') { slave_id = c - '0'; } } if (slave_id < 0 || slave_id >= MAX_SLAVES) return; if (advertisedDevice.isAdvertisingService(BLEUUID(SERVICE_UUID))) { if (pHandler->pServerAddress[slave_id] != nullptr) { return; // 已发现 } pHandler->pServerAddress[slave_id] = new BLEAddress(advertisedDevice.getAddress()); pHandler->doConnect[slave_id] = true; Serial.printf("发现从板 %d: %s\n", slave_id, advertisedDevice.getAddress().toString().c_str()); } } void BLEClientHandler::ClientCallback::onConnect(BLEClient* client) { Serial.println("BLE 连接成功"); } void BLEClientHandler::ClientCallback::onDisconnect(BLEClient* client) { Serial.println("与从机断开连接,准备重连..."); for (int i = 0; i < MAX_SLAVES; ++i) { if (pHandler->pClient[i] == client) { pHandler->doConnect[i] = true; // 标记为可重连 break; } } } void BLEClientHandler::notifyCallback(BLERemoteCharacteristic* pChar, uint8_t* pData, size_t length, bool isNotify) { Serial.printf("收到 BLE 数据包!长度 = %u 字节: ", length); for (int i = 0; i < length; ++i) { Serial.printf("%02X ", pData[i]); } Serial.println(); if (length != 35) { Serial.printf("数据长度错误!期望 35,实际 %u\n", length); return; } uint8_t slave_id = pData[34]; if (slave_id >= MAX_SLAVES) { Serial.printf("无效 Slave ID: %d\n", slave_id); return; } uint16_t cellRaw[16]; uint16_t dieTempRaw; for (int i = 0; i < 16; ++i) { cellRaw[i] = (pData[i * 2] << 8) | pData[i * 2 + 1]; } dieTempRaw = (pData[32] << 8) | pData[33]; ::process_battery_raw(slave_id, cellRaw, dieTempRaw); } bool BLEClientHandler::isConnected(uint8_t slave_id) const { return pClient[slave_id] != nullptr && pClient[slave_id]->isConnected(); } void BLEClientHandler::disconnect(uint8_t slave_id) { if (pClient[slave_id] && pClient[slave_id]->isConnected()) { pClient[slave_id]->disconnect(); Serial.printf("已断开从板 %d\n", slave_id); } } // 实现:访问私有成员的安全接口 bool BLEClientHandler::shouldConnect(uint8_t slave_id) { if (slave_id >= MAX_SLAVES) return false; return doConnect[slave_id]; } bool BLEClientHandler::hasDiscovered(uint8_t slave_id) { if (slave_id >= MAX_SLAVES) return false; return pServerAddress[slave_id] != nullptr; } void BLEClientHandler::requestReconnect(uint8_t slave_id) { if (slave_id >= MAX_SLAVES) return; doConnect[slave_id] = true; } // 主循环逻辑 void BLEClientHandler::loop() { for (int id = 0; id < MAX_SLAVES; ++id) { if (!doConnect[id] || pServerAddress[id] == nullptr) continue; Serial.printf("在连接从板 %d: %s\n", id, pServerAddress[id]->toString().c_str()); pClient[id] = BLEDevice::createClient(); pClient[id]->setClientCallbacks(new ClientCallback(this)); bool connected = pClient[id]->connect(*pServerAddress[id]); if (connected) { Serial.printf("从板 %d 连接成功\n", id); pClient[id]->setMTU(256); delay(100); BLERemoteService* pRemoteService = pClient[id]->getService(BLEUUID(SERVICE_UUID)); if (!pRemoteService) { Serial.printf("从板 %d 未发现服务\n", id); delete pClient[id]; pClient[id] = nullptr; doConnect[id] = true; delay(5000); continue; } BLERemoteCharacteristic* pRemoteCharacteristic = pRemoteService->getCharacteristic(BLEUUID(CHARACTERISTIC_UUID)); if (!pRemoteCharacteristic) { Serial.printf("从板 %d 未发现特征值\n", id); delete pClient[id]; pClient[id] = nullptr; doConnect[id] = true; delay(5000); continue; } if (pRemoteCharacteristic->canNotify()) { pRemoteCharacteristic->registerForNotify(notifyCallback); BLERemoteDescriptor* pCCC = pRemoteCharacteristic->getDescriptor(BLEUUID((uint16_t)0x2902)); if (pCCC != nullptr) { uint8_t notifyOn[] = {0x01, 0x00}; pCCC->writeValue(notifyOn, sizeof(notifyOn), false); Serial.println("CCCD 已写入 0x0100,启用 Notify"); } else { Serial.println("无法获取 CCCD 描述符!"); } Serial.printf("从板 %d 已启用 Notify\n", id); } doConnect[id] = false; } else { Serial.printf("从板 %d 连接失败\n", id); delete pClient[id]; pClient[id] = nullptr; delete pServerAddress[id]; pServerAddress[id] = nullptr; doConnect[id] = true; delay(5000); } } } // main.cpp #include "main.h" #include <WiFi.h> #include "esp_uart_driver.h" #include "uart_msg_analy.h" #include "network_app.h" #include "spi_slave_server.h" #include "BLEClient.h" // 共享数据区 uint8_t g_raw_battery_bytes[MAX_SLAVES][34] = {0}; size_t g_raw_battery_len[MAX_SLAVES] = {0}; portMUX_TYPE raw_data_mutex_array[MAX_SLAVES] = {}; extern "C" void init_raw_data_mutexes() { for (int i = 0; i < MAX_SLAVES; ++i) { raw_data_mutex_array[i] = portMUX_INITIALIZER_UNLOCKED; } } // 理电池原始数据 void process_battery_raw(uint8_t slave_id, const uint16_t cell[16], uint16_t die_temp) { if (slave_id >= MAX_SLAVES) return; Serial.printf("[BLE] 收到从板 %d 的原始数据: cell[0]=%u, die_temp=%u\n", slave_id, cell[0], die_temp); portENTER_CRITICAL(&raw_data_mutex_array[slave_id]); for (int i = 0; i < 16; i++) { g_raw_battery_bytes[slave_id][i * 2] = (cell[i] >> 8) & 0xFF; g_raw_battery_bytes[slave_id][i * 2 + 1] = cell[i] & 0xFF; } g_raw_battery_bytes[slave_id][32] = (die_temp >> 8) & 0xFF; g_raw_battery_bytes[slave_id][33] = die_temp & 0xFF; g_raw_battery_len[slave_id] = 34; Serial.printf("[BLE] 已保存数据到 g_raw_battery_bytes[%d],长度设为 %zu\n", slave_id, g_raw_battery_len[slave_id]); portEXIT_CRITICAL(&raw_data_mutex_array[slave_id]); } #define UART1_TX_PIN 4 #define UART1_RX_PIN 5 BLEClientHandler* pBLE = nullptr; // 使用公共接口打印状态(不再访问 private 成员) void print_ble_status() { static uint32_t last_print = 0; if (millis() - last_print > 5000) { last_print = millis(); for (int i = 0; i < MAX_SLAVES; ++i) { if (pBLE && pBLE->isConnected(i)) { // 使用 pBLE 指针 Serial.printf("从板 %d: 在线\n", i); } else if (BLEClientHandler::shouldConnect(i)) { Serial.printf("从板 %d: 待连接/重连\n", i); } else if (BLEClientHandler::hasDiscovered(i)) { Serial.printf("从板 %d: 已发现地址\n", i); } } } } void setup() { Serial.begin(115200); delay(100); uart0_init(115200, (void *)0); uart1_init(115200, UART1_RX_PIN, UART1_TX_PIN, (void *)uart1_msg_analy); esp_random(); init_raw_data_mutexes(); // === 临时注入测试数据 === for (int id = 0; id < MAX_SLAVES; ++id) { for (int i = 0; i < 34; ++i) { g_raw_battery_bytes[id][i] = i + id * 10; // 不同 id 不同模式 } g_raw_battery_len[id] = 34; } // ======================== spi_slave_server_init(); pBLE = BLEClientHandler::getInstance(); if (pBLE) { pBLE->begin(); } else { Serial.println("无法创建 BLEClientHandler实例"); } } void loop() { uart_process(); // 调用 loop if (pBLE) { pBLE->loop(); } static uint32_t last_scan_time = 0; if (millis() - last_scan_time > 5000) { Serial.println("开始新一轮 BLE 扫描..."); BLEDevice::getScan()->clearResults(); BLEDevice::getScan()->start(5, false); last_scan_time = millis(); } //print_ble_status(); delay(1000); } boolean doDelayMillisTime(uint32_t interval, uint32_t *previousMillis, boolean state) { uint32_t currentMillis = (uint32_t)SYSTEM_TIMER_MS(); if (currentMillis - *previousMillis >= interval) { *previousMillis = currentMillis; state = !state; } return state; } void printf_log_hex(char *hex_name, uint8_t *data, uint32_t len) { Serial.printf("%s ,len is:%d \r\n", hex_name, len); for (int i = 0; i < len; i++) { Serial.printf("%02x ", data[i]); } Serial.printf("\r\n"); } // spi_slave_server.cpp #include "spi_slave_server.h" #include <string.h> #include <SPI.h> #include <ESP32SPISlave.h> ESP32SPISlave slave; #define SPI_SLAVE_ENABLE 1 #define MY_CS 12 #define MY_SCK 13 #define MY_MOSI 14 #define MY_MISO 11 #define SPI_READ_TIMEOUT 999999 static constexpr size_t SPI_BUFFER_SIZE = 64; static uint8_t spi_tx_buf[SPI_BUFFER_SIZE]; static uint8_t spi_rx_buf[SPI_BUFFER_SIZE]; static volatile uint8_t current_slave_id = 0; // 缓存区(用于存放待发送的原始数据) static volatile uint8_t spi_tx_cache_buf[1024]; static volatile int spi_tx_cache_buf_cnt = 0; // 上一次命令(调试用) static uint8_t last_received_cmd = 0xFF; #define DEBUG_SPI_SLAVE /** * @brief 添加数据到 SPI 发送缓存(保留原函数) */ int spi_slave_data_cache_add(uint8_t *data, uint16_t len) { if (len > 1024) len = 1024; for (int i = 0; i < len; ++i) { spi_tx_cache_buf[i] = data[i]; } spi_tx_cache_buf_cnt = len; return 0; } void prepare_response_packet() { memset(spi_tx_buf, 0, SPI_BUFFER_SIZE); // 设置新的响应格式: 00 00 AA BB 00 <slave_id> [34 bytes] spi_tx_buf[0] = 0x00; // 帧头 spi_tx_buf[1] = 0x00; // 帧头 spi_tx_buf[2] = 0xAA; // 帧头 spi_tx_buf[3] = 0xBB; // 帧头 spi_tx_buf[4] = 0x00; // 保留字节(可后续扩展用途) spi_tx_buf[5] = current_slave_id; // 从板编号 → 放在第6个字节 extern uint8_t g_raw_battery_bytes[8][34]; extern size_t g_raw_battery_len[8]; extern portMUX_TYPE raw_data_mutex_array[8]; portENTER_CRITICAL(&raw_data_mutex_array[current_slave_id]); Serial.printf("[SPI] 当前请求 slave_id=%d, g_raw_battery_len[%d]=%zu\n", current_slave_id, current_slave_id, g_raw_battery_len[current_slave_id]); if (g_raw_battery_len[current_slave_id] >= 34) { memcpy(&spi_tx_buf[6], g_raw_battery_bytes[current_slave_id], 34); } else { memset(&spi_tx_buf[6], 0, 34); Serial.printf("[SPI] 数据无效,填充0\n"); } portEXIT_CRITICAL(&raw_data_mutex_array[current_slave_id]); } static void spi_slave_task(void *pvParameters) { size_t received_bytes; // 初始化第一包,默认返回 slave_id=0 数据 current_slave_id = 0; prepare_response_packet(); while (true) { if (digitalRead(MY_CS) == LOW) { memset(spi_rx_buf, 0, SPI_BUFFER_SIZE); // 1. 使用当前 prepared 的 spi_tx_buf 发送(即上一轮准备好的) // 同时接收主机命令 received_bytes = slave.transfer(spi_tx_buf, spi_rx_buf, SPI_BUFFER_SIZE, SPI_READ_TIMEOUT); bool cmd_valid = false; uint8_t next_slave_id = current_slave_id; // 默认保持不变 uint8_t last_cmd = 0; // ← 提前声明,用于调试输出 // 2. 解析刚收到的命令 if (received_bytes > 0 && spi_rx_buf[0] == 0xAA) { uint8_t cmd = spi_rx_buf[1]; if (cmd < MAX_SLAVES) { next_slave_id = cmd; cmd_valid = true; last_cmd = cmd; // 保存副本供外部使用 } } // 3. 立即准备“下一次”通信要用的响应包 current_slave_id = next_slave_id; prepare_response_packet(); #ifdef DEBUG_SPI_SLAVE if (cmd_valid) { Serial.printf("SPI: 收到命令 AA %02X, 下次将返回 slave_id=%d 数据\n", last_cmd, next_slave_id); } #endif } else { vTaskDelay(10); } vTaskDelay(1); } } void spi_slave_server_init(void) { #if SPI_SLAVE_ENABLE slave.setDataMode(SPI_MODE3); slave.setQueueSize(1); slave.begin(HSPI, MY_SCK, MY_MISO, MY_MOSI, MY_CS); xTaskCreate(spi_slave_task, "spi_slave_task", 8192, NULL, 2, NULL); Serial.println("SPI Slave 已启动"); #endif } ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0x1 (POWERON),boot:0x28 (SPI_FAST_FLASH_BOOT) SPIWP:0xee mode:DIO, clock div:1 load:0x3fce3808,len:0x4bc load:0x403c9700,len:0xbd8 load:0x403cc700,len:0x2a0c entry 0x403c98d0 uart1_init... baud_rate=115200,rx= 5,tx= 4 SPI Slave 已启动 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 发现从板 2: b8:f8:62:c8:b4:dd [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 在连接从板 2: b8:f8:62:c8:b4:dd [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 BLE 连��成功 从板 2 连接成功 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 [SPI] 当前请求 slave_id=0, g_raw_battery_len[0]=34 CCCD 已写入 0x0100,启用 Notify 从板 2 已启用 Notify 开始新一轮 BLE 扫描... 收到 BLE 数据包!长度 = 35 字节: 9C C3 B3 78 9B 42 B3 E3 9B A6 B4 37 77 3B 42 45 1A F6 2B D7 26 39 22 0A 26 17 1F 89 22 3E 04 FGuru Meditation Error: Core 0 panic'ed (Interrupt wdt timeout on CPU0). Core 0 register dump: PC : 0x40381c4a PS : 0x00060034 A0 : 0x80380992 A1 : 0x3fcf6d10 A2 : 0x3fcec09c A3 : 0x3fcedf14 A4 : 0x00000000 A5 : 0x00060023 A6 : 0x00060023 A7 : 0x00000001 A8 : 0x3fcedf14 A9 : 0x00000017 A10 : 0x3fcedf14 A11 : 0x00000017 A12 : 0x00000000 A13 : 0x00060023 A14 : 0x02c98020 A15 : 0x00ffffff SAR : 0x00000004 EXCCAUSE: 0x00000005 EXCVADDR: 0x00000000 LBEG : 0x400556d5 LEND : 0x400556e5 LCOUNT : 0xffffffff Backtrace: 0x40381c47:0x3fcf6d10 0x4038098f:0x3fcf6d30 0x4037fc72:0x3fcf6d50 0x4200a80e:0x3fcf6d90 0x420095d9:0x3fcf6db0 0x42009aa7:0x3fcf6dd0 0x42003ae5:0x3fcf6e70 0x42003bb1:0x3fcf6e90 Core 1 register dump: PC : 0x400570ea PS : 0x00060036 A0 : 0x820151d0 A1 : 0x3fcf4a40 A2 : 0x3fcf4a5c A3 : 0x00000000 A4 : 0x00000024 A5 : 0x3fcf4a5c A6 : 0x00000001 A7 : 0x00000002 A8 : 0x00000001 A9 : 0x00000020 A10 : 0x3fc9f544 A11 : 0x00000000 A12 : 0x00000010 A13 : 0xbaad5678 A14 : 0x00060720 A15 : 0x00000001 SAR : 0x0000000e EXCCAUSE: 0x00000001 EXCVADDR: 0x00000000 LBEG : 0x400570e8 LEND : 0x400570f3 LCOUNT : 0x00000001 Backtrace: 0x400570e7:0x3fcf4a40 0x420151cd:0x3fcf4a50 0x4037726d:0x3fcf4aa0 0x40376bfc:0x3fcf4ac0 0x00040022:0x3fcf4b80 |<-CORRUPTED ELF file SHA256: 3ff7fe5e2be6df45 Guru Meditation Error: Core 1 panic'ed (Unhandled debug exception). Debug exception reason: Stack canary watchpoint triggered (IDLE1) Core 1 register dump: PC : 0x400570ea PS : 0x00060036 A0 : 0x820151d0 A1 : 0x3fcf4a40 A2 : 0x3fcf4a5c A3 : 0x00000000 A4 : 0x00000024 A5 : 0x3fcf4a5c A6 : 0x00000001 A7 : 0x00000002 A8 : 0x00000001 A9 : 0x00000020 A10 : 0x3fc9f544 A11 : 0x00000000 A12 : 0x00000010 A13 : 0xbaad5678 A14 : 0x00060720 A15 : 0x00000001 SAR : 0x0000000e EXCCAUSE: 0x00000001 EXCVADDR: 0x00000000 LBEG : 0x400570e8 LEND : 0x400570f3 LCOUNT : 0x00000001 Backtrace: 0x400570e7:0x3fcf4a40 0x420151cd:0x3fcf4a50 0x4037726d:0x3fcf4aa0 0x40376bfc:0x3fcf4ac0 0x00040022:0x3fcf4b80 |<-CORRUPTED Core 0 register dump: PC : 0x403866f7 PS : 0x00020534 A0 : 0x82076e16 A1 : 0x3fcf6b20 A2 : 0x00020523 A3 : 0xa5a5a5a5 A4 : 0x82076e16 A5 : 0x00060525 A6 : 0xfffbfff0 A7 : 0x00000046 A8 : 0x3fc989b8 A9 : 0x00000001 A10 : 0x60000000 A11 : 0x00000001 A12 : 0x0000000a A13 : 0x3fcf6b0c A14 : 0x00000001 A15 : 0x3fcf4b80 SAR : 0x0000000a EXCCAUSE: 0x00000005 EXCVADDR: 0x00000000 LBEG : 0x400570e8 LEND : 0x400570f3 LCOUNT : 0x00000000 Backtrace: 0x403866f4:0x3fcf6b20 0x42076e13:0x3fcf6b30 0x42077415:0x3fcf6b50 0x42014ff6:0x3fcf6b70 0x420152f6:0x3fcf6be0 0x4037726d:0x3fcf6c30 0x40376bfc:0x3fcf6c50 0x00040022:0x3fcf6d10 |<-CORRUPTED ELF file SHA256: 3ff7fe5e2be6df45 Re-entered core dump! Exception happened during core dump! Rebooting...
10-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值