Loading... ![引脚.png][1] 1、ESP8266 软件定时器不能和while(1)一起用、while(1)会把软件定时器卡死。 2、硬件定时器可以和while(1)一起用,while(1)里要喂看门狗 3、串口接收 https://www.jianshu.com/p/819b33b8a011 开启串口接收缓存 ![串口.png][2] 把串口接收任务改掉 LOCAL void ICACHE_FLASH_ATTR uart_recvTask(os_event_t *events) { if(events->sig == 0) { // 1.从先进先出通道 FIFO 读取接收到的数据长度 uint8 fifo_len = (READ_PERI_REG(UART_STATUS(UART0))>>UART_RXFIFO_CNT_S)&UART_RXFIFO_CNT; uint8 d_tmp = 0; uint8 idx = 0; // 2.定义一个临时接收的数据区 uint8 uartRxBuffer[256] = {0}; // 3. 赋值给临时数组 for(idx = 0; idx < fifo_len; idx++) { d_tmp = READ_PERI_REG(UART_FIFO(UART0)) & 0xFF; // 根据数据长度一个一个读取数据 uartRxBuffer[idx] = d_tmp; // 赋值 } // 4.做你自己的事情,uartRxBuffer[]数组就是接收到的数据 { os_printf("\n--------------------------\n"); } // 清除中断寄存器的 满中断位 或 超时中断位 WRITE_PERI_REG(UART_INT_CLR(UART0), UART_RXFIFO_FULL_INT_CLR|UART_RXFIFO_TOUT_INT_CLR); // 5.UART0接收中断使能 uart_rx_intr_enable(UART0); } else if(events->sig == 1) { } } [1]: https://stgui.com/usr/uploads/2021/04/431231692.png [2]: https://stgui.com/usr/uploads/2021/04/864120495.png 最后修改:2021 年 04 月 06 日 12 : 31 AM © 允许规范转载 赞赏 请关注我的公众号 ×Close 赞赏作者 扫一扫支付 支付宝支付 微信支付