完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在尝试建立一个TCP服务器,但模块在几秒钟后自动重置。
我在 UART 中获取这些日志。 ets 2013-01-8,第一个原因:4,开机模式:(3,6) 这是我的代码: 法典:全选 #include #include #include #include #include #include #include #include LOCAL struct espconn esp_conn; 本地esp_tcp esptcp; /*静态os_timer_t s_Timer; int s_Tick = 0; void TimerFunction(void *arg) { s_Tick++; if(GPIO_REG_READ(GPIO_OUT_ADDRESS) & BIT2) { gpio_output_set(0, BIT2, BIT2, 0); } else { gpio_output_set(BIT2, 0, BIT2, 0); } os_timer_disarm(&s_Timer); } void 眨眼(int x) { int i; for (i = 0; i < (x * 2); i++) { os_timer_setfn(&s_Timer, TimerFunction, NULL); os_timer_arm(&s_Timer, 300, 0); } }*/ LOCAL void ICACHE_FLASH_ATTR tcp_server_sent_cb(void *arg) { os_printf("nSent Successfuly"); } LOCAL void ICACHE_FLASH_ATTR tcp_server_recv_cb(void *arg, char *pusrdata, unsigned short length) { os_printf("nRecieved Data : %s", pusrdata); char *data = "ON"; int x = os_strncmp(pusrdata, data, os_strlen(data)); os_printf("nX : %d", x); if (x == 0) os_printf("nDevice is ON"); else { os_printf("nWrong Data Recieved!!!!"); //blink(1); } } LOCAL void ICACHE_FLASH_ATTR tcp_server_discon_cb(void *arg) { os_printf("nServer Disconnected"); } LOCAL void ICACHE_FLASH_ATTR tcp_server_recon_cb(void *arg, sint8 错误) { os_printf("nServer Connection Failed!! Re-connecting"); } LOCAL void ICACHE_FLASH_ATTR tcp_server_connect(void *arg) { os_printf("nA Device Connected to Server"); //blink(1); struct espconn *pesp_conn = arg; espconn_regist_recvcb(pesp_conn, tcp_server_recv_cb); espconn_regist_reconcb(pesp_conn, tcp_server_recon_cb); espconn_regist_disconcb(pesp_conn, tcp_server_discon_cb); espconn_regist_sentcb(pesp_conn, tcp_server_sent_cb); } 无效 ICACHE_FLASH_ATTR user_tcpserver_init() { const char tcp_local_ip[4] = { 192, 168, 123, 101 }; esp_conn.type = ESPCONN_TCP; esp_conn.state = ESPCONN_NONE; esp_conn.proto.tcp = &esptcp; esp_conn.proto.tcp->local_port = 8881; os_memcpy(esp_conn.proto.tcp->local_ip, tcp_local_ip, 4); espconn_regist_connectcb(&esp_conn, tcp_server_connect); espconn_accept(&esp_conn); os_printf("nTCP Server Established"); } void ICACHE_FLASH_ATTR user_set_softap_config(void) { struct softap_config config; wifi_softap_get_config(&config); os_memset(config.ssid, 0, 32); os_memset(config.password, 0, 64); os_memcpy(config.ssid, "ESP8266", 7); os_memcpy(config.password, "12345678", 8); config.authmode = AUTH_WPA_WPA2_PSK; config.ssid_len = 7; config.beacon_interval = 100; config.max_connection = 4; wifi_softap_set_config(&config); os_printf("nSoftAP Configured"); } void user_init(void) { //system_soft_wdt_stop(); os_printf("nSystem Startedn"); gpio_init(); PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_GPIO2); gpio_output_set(BIT2, 0, BIT2, 0); //blink(1); if(wifi_get_opmode() != SOFTAP_MODE) { wifi_set_opmode(SOFTAP_MODE); system_restart(); } os_printf("nWifi OPMODE : SOFTAP"); user_set_softap_config(); user_tcpserver_init(); } 请帮帮我。 谢谢 |
|
相关推荐
1个回答
|
|
从您提供的信息来看,ESP-01模块在几秒钟后自动重置的原因可能是由于看门狗定时器(Watchdog Timer,简称WDT)触发导致的。看门狗定时器是一种在微控制器中用于防止程序卡死或停止响应的机制。当程序运行时间过长,没有及时“喂狗”(即重置看门狗定时器)时,看门狗定时器会触发系统重置。
在您的日志中,可以看到以下信息: ``` WDT 复位负载0x3ffe8000 ``` 这表明看门狗定时器已经触发了重置。 要解决这个问题,您可以尝试以下方法: 1. 在程序中添加看门狗定时器的初始化代码。在您的程序开始时,调用以下函数来初始化看门狗定时器: ```c void system_init(void) { system_update_cpu_freq(SYS_CPU_80MHZ); system_init_watchdog(); } ``` 2. 在程序的适当位置添加看门狗定时器的重置代码。您可以使用以下函数来重置看门狗定时器: ```c void ICACHE_FLASH_ATTR system_soft_wdt_reset(void) { WDT_RESET(); } ``` 确保在程序的循环或关键部分调用`system_soft_wdt_reset()`函数,以防止看门狗定时器触发重置。 3. 检查您的代码是否存在死循环或阻塞操作,这可能导致程序无法及时重置看门狗定时器。确保程序在执行关键任务时,定期调用`system_soft_wdt_reset()`函数。 4. 如果问题仍然存在,您可以尝试修改看门狗定时器的超时时间。在`system_init_watchdog()`函数中,可以设置不同的超时时间。例如: ```c void system_init_watchdog(uint8_t timeout_s) { system_soft_wdt_feed(); REG_SET_BIT(0x3ff00014, BIT(0)); REG_CLR_BIT(0x3ff00014, BIT(0)); REG_WRITE(0x3ff00018, (timeout_s * 80) & 0xffffff); } ``` 将`timeout_s`设置为一个较大的值,以增加看门狗定时器的超时时间。 希望这些建议能帮助您解决问题。如果问题仍然存在,请检查您的代码和硬件连接,确保没有其他问题导致模块重置。 |
|
|
|
只有小组成员才能发言,加入小组>>
1002 浏览 1 评论
554浏览 6评论
463浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
447浏览 5评论
448浏览 4评论
422浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 18:12 , Processed in 1.114213 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号