{"id":12367,"date":"2025-04-18T19:32:02","date_gmt":"2025-04-18T11:32:02","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/12367.html"},"modified":"2025-04-18T19:32:02","modified_gmt":"2025-04-18T11:32:02","slug":"stm32%e5%ae%9e%e7%8e%b0esp8266%e8%bf%9e%e6%8e%a5%e5%88%b0tcp%e6%9c%8d%e5%8a%a1%e5%99%a8%ef%bc%88%e4%ba%8c%ef%bc%89","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/12367.html","title":{"rendered":"stm32\u5b9e\u73b0esp8266\u8fde\u63a5\u5230TCP\u670d\u52a1\u5668\uff08\u4e8c\uff09"},"content":{"rendered":"<p style=\"margin-left:0;text-align:justify\">1.2 \u8fde\u63a5\u5230TCP Server<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a01.2.1 \u4f7f\u7528\u7f51\u7edc\u52a9\u624b&#xff0c;\u8bbe\u7acbTCP\u670d\u52a1\u5668<\/p>\n<p style=\"margin-left:0;text-align:justify\"><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418113201-6802383114593.png\" alt=\"ffeb445201fa4e8e90e47bb5983b9e21.png\" \/>\u200b<\/p>\n<p style=\"margin-left:0;text-align:justify\"><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418113201-68023831337ba.png\" alt=\"25e56e8e7a3441ddaa4389aaa537ae58.png\" \/>\u7f16\u8f91<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a01.2.2 \u8fde\u63a5\u670d\u52a1\u5668<\/p>\n<p style=\"margin-left:0;text-align:justify\">AT&#043;CIPSTART&#061;&#034;TCP&#034;,&#034;192.168.1.18&#034;,8080 \/\/\u6307\u4ee4&#xff0c;\u6ce8\u610f\u53cc\u5f15\u53f7\u9017\u53f7\u90fd\u8981\u534a\u89d2(\u82f1\u6587)\u8f93\u5165 CONNECT \/\/\u7ed3\u679c&#xff1a;\u6210\u529f OK \/\/\u7ed3\u679c&#xff1a;\u6210\u529f &#xff2f;&#xff2b;<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a01.2.3 \u53d1\u9001\u6570\u636e<\/p>\n<p style=\"margin-left:0;text-align:justify\">&#xff21;&#xff34;&#xff0b;&#xff23;&#xff29;&#xff30;&#xff33;&#xff25;&#xff2e;&#xff24;&#xff1d;&#xff14;\u3000&#xff0f;&#xff0f;\u8bbe\u7f6e\u5373\u5c06\u53d1\u9001\u6570\u636e\u7684\u957f\u5ea6<\/p>\n<p style=\"margin-left:0;text-align:justify\">&#xff1e;&#xff41;&#xff42;&#xff43;&#xff44;\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000&#xff0f;&#xff0f;\u770b\u5230\u5927\u4e8e\u53f7\u540e&#xff0c;\u8f93\u5165\u6d88\u606f&#xff0c;&#xff41;&#xff42;&#xff43;&#xff44;&#xff0c;\u4e0d\u8981\u5e26\u56de\u8f66<\/p>\n<p style=\"margin-left:0;text-align:justify\">&#xff32;&#xff45;&#xff53;&#xff50;&#xff4f;&#xff4e;&#xff53;&#xff45;\u3000&#xff1a;&#xff33;&#xff25;&#xff2e;&#xff24;\u3000&#xff2f;&#xff2b;\u3000&#xff0f;&#xff0f;\u7ed3\u679c&#xff1a;\u6210\u529f<\/p>\n<p style=\"margin-left:0;text-align:justify\">&#xff0f;&#xff0f;\u6ce8\u610f&#xff0c;\u8fd9\u79cd\u60c5\u51b5\u4e0b&#xff0c;\u6bcf\u6b21\u53d1\u9001\u524d\u90fd\u8981\u7ebf\u53d1\u9001&#xff21;&#xff34;&#xff0b;&#xff23;&#xff29;&#xff30;&#xff33;&#xff25;&#xff2e;&#xff24;&#xff1d;\u957f\u5ea6&#xff0c;\u7684\u6307\u4ee4&#xff0c;\u5728\u53d1\u6570\u636e&#xff01;<\/p>\n<p style=\"margin-left:0;text-align:justify\">1.3 \u900f\u4f20<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u7528&#xff21;&#xff34;\u3000&#xff0b;\u3000&#xff23;&#xff29;&#xff30;&#xff33;&#xff25;&#xff2e;&#xff24;\u3000&#xff1d;\u3000&#xff14;&#xff0c;\u6bcf\u6b21\u53d1\u9001\u6570\u636e\u90fd\u8981\u8fdb\u884c\u5b57\u7b26\u957f\u5ea6\u8bbe\u5b9a<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u4eca\u5929\u900f\u4f20\u6a21\u5f0f<\/p>\n<p style=\"margin-left:0;text-align:justify\">AT&#043;CIPMODE&#061;1 \/\/\u5f00\u542f\u900f\u4f20\u6a21\u5f0f<\/p>\n<p style=\"margin-left:0;text-align:justify\">Response :OK<\/p>\n<p style=\"margin-left:0;text-align:justify\">AT&#043;CIPSEND \/\/\u5e26\u56de\u8f66<\/p>\n<p style=\"margin-left:0;text-align:justify\">Response: &gt; \/\/\u8fd9\u4e2a\u65f6\u5019\u968f\u610f\u53d1\u9001\u63a5\u6536\u6570\u636e\u54af<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u9000\u51fa\u900f\u4f20\u6a21\u5f0f<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u00a0\u5728\u900f\u4f20\u53d1\u9001\u6570\u636e\u8fc7\u7a0b\u4e2d&#xff0c;\u82e5\u8bc6\u522b\u5230\u5355\u72ec\u7684\u2f00\u5305\u6570\u636e \u201c&#043;&#043;&#043;\u201d&#xff0c;\u5219\u9000\u51fa\u900f\u4f20\u53d1\u9001<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u00a0<\/p>\n<p>  \u00a0 <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u5934\u6587\u4ef6<\/p>\n<p>#include &#034;sys.h&#034;<br \/>\n#include &#034;esp8266.h&#034;<br \/>\n#include &#034;string.h&#034;<br \/>\n#include &#034;delay.h&#034;<br \/>\n#include &#034;stdarg.h&#034;<br \/>\nuint8_t esp8266_tx_buf[ESP8266_TX_BUF_SIZE];<br \/>\nuint8_t esp8266_rx_buf[ESP8266_RX_BUF_SIZE]; <\/p>\n<p>uint16_t esp8266_cnt &#061; 0 ,esp8266_cntPre &#061; 0; \/* esp8266\u63a5\u6536\u7f13\u51b2\u533a *\/<\/p>\n<p>UART_HandleTypeDef esp8266_handle;             \/* esp8266\u53e5\u67c4 *\/<\/p>\n<p style=\"margin-left:0;text-align:justify\">esp8266\u6a21\u5757\u4e32\u53e3\u914d\u7f6e\u521d\u59cb\u5316<\/p>\n<p>\/\/\u6b63\u5e38\u4f1a\u6709\u542f\u52a8\u7684\u6d41\u7a0b\u53ea\u662f\u4f5c\u4e3a\u4e00\u4e2a\u4e32\u53e3\u7684\u521d\u59cb\u5316<br \/>\nvoid esp8266_uart_init(uint16_t baudrate)<br \/>\n{<br \/>\n    esp8266_handle.Instance &#061; USART2;                  \/* USART1 *\/<br \/>\n    esp8266_handle.Init.Baudrate &#061; baudrate;           \/*\u6ce2\u7279\u7387*\/<br \/>\n    esp8266_handle.Init.WordLength&#061; UART_WORDLENGTH_8B;\/*\u5b57\u957f\u4e3a8\u4f4d\u7684\u6570\u636e\u683c\u5f0f\u4f20\u8f93*\/<br \/>\n    esp8266_handle.Init.StopBits &#061; UART_STOPBITS_1;    \/*\u4e00\u4e2a\u505c\u6b62\u4f4d*\/<br \/>\n    esp8266_handle.Init.Parity   &#061; UART_PARITY_NONE;                   \/*\u65e0\u5947\u5076\u6821\u9a8c\u4f4d*\/<br \/>\n    esp8266_handle.Init.HwFlowCtl &#061; UART_HWCONTRL_NONE;\/*\u65e0\u786c\u4ef6\u6d41\u63a7\u5236*\/<br \/>\n    esp8266_handle.Init.Mode      &#061; UART_MODE_TX_RX;   \/*\u6536\u53d1\u6a21\u5f0f*\/<br \/>\n    HAL_UART_Init(esp8266_handle);<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u6e05\u9664\u63a5\u6536\u7f13\u5b58<\/p>\n<p>void esp8266_rx_clear(void)<br \/>\n{<br \/>\n    memset(esp8266_rx_buf,0,sizeof(esp8266_rx_buf));<br \/>\n    esp8266_cnt &#061; 0;<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u4e2d\u65ad\u670d\u52a1\u51fd\u6570<\/p>\n<p>void USART2_IRQHandler(void)<br \/>\n{<br \/>\n    uint8_t receive_data &#061; 0;<br \/>\n    \/* \u83b7\u53d6\u63a5\u6536RXNE\u6807\u5fd7\u4f4d\u662f\u5426\u88ab\u7f6e\u4f4d *\/<br \/>\n    if(__HAL_UART_GET_FLAG(&amp;esp8266_handle,UART_FLAG_RXNE) !&#061;RESET)<br \/>\n    {<br \/>\n        \/* \u5219\u5c06\u63a5\u6536\u8ba1\u6570\u5668\u6e05\u96f6 *\/<br \/>\n        if(esp8266_cnt &gt;&#061;sizeof(esp8266_rx_buf))<br \/>\n        esp8266_cnt &#061; 0;<br \/>\n        \/* \u63a5\u6536\u4e00\u4e2a\u5b57\u7b26 *\/<br \/>\n        HAL_UART_Receive(&amp;esp8266_handle,&amp;receive_data, 1,1000);<br \/>\n        \/* \u5c06\u63a5\u6536\u5230\u7684\u5b57\u7b26\u4fdd\u5b58\u5728\u63a5\u6536\u7f13\u51b2\u533a *\/<br \/>\n        esp8266_rx_buf[esp8266_cnt&#043;&#043;] &#061; receive_data;<br \/>\n}<br \/>\n        \/* \u83b7\u53d6\u63a5\u6536\u7a7a\u95f2\u4e2d\u65ad\u6807\u5fd7\u4f4d\u662f\u5426\u88ab\u7f6e\u4f4d *\/<br \/>\n        if(__HAL_UART_GET_FLAG(&amp;esp8266_handle,UART_FLAG_IDLE) !&#061; RESET)<br \/>\n        {<br \/>\n                                 \/* \u5c06\u63a5\u6536\u5230\u7684\u6570\u636e\u6253\u5370\u51fa\u6765 *\/<br \/>\n        printf(&#034;recv: %s\\\\r\\\\n&#034;, esp8266_rx_buf);<br \/>\n        esp8266_rx_clear();      \/* \u6e05\u9664UART\u603b\u7ebf\u7a7a\u95f2\u4e2d\u65ad *\/<br \/>\n        __HAL_UART_CLEAR_IDLEFLAG(&amp;esp8266_handle)<br \/>\n}<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u63a5\u6536\u7b49\u5f85<\/p>\n<p>uint8_t esp8266_wait_receive(void)<br \/>\n{<br \/>\n    if(esp8266_cnt &#061;&#061; 0)<br \/>\n    return ESP8266_ERROR;<br \/>\n    if(esp8266_cnt &#061;&#061; esp8266_cntPre)<br \/>\n    {<br \/>\n    esp8266_cnt &#061; 0;<br \/>\n    return ESP8266_EOK;<br \/>\n    }<br \/>\n    esp8266_cntPre &#061; esp8266_cnt;<br \/>\n    return ESP8266_ERROR;<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u53d1\u9001\u547d\u4ee4\u4e0e\u671f\u5f85\u56de\u590d\u51fd\u6570<\/p>\n<p>uint8_t esp8266_send_command(char *cmd,cahr *res)<br \/>\n{<br \/>\n    uint8_t timeout_out &#061; 250;<\/p>\n<p>    esp8266_rx_clear();\/\/\u9632\u6b62\u7f13\u51b2\u533a\u5185\u7684\u6570\u636e\u5f71\u54cd<br \/>\n    HAL__UART_Tramsmit(&amp;esp8266_handle,(uint8_t *)cmd,strlen(cmd),100);<\/p>\n<p>    while(timeout_out&#8211;)\/\/\u4e0d\u505c\u7684\u7b49\u5f85<br \/>\n    {<br \/>\n    if(esp8266_wait_receive() &#061;&#061; ESP8266_EOK)<br \/>\n    {<br \/>\n    if(strstr(const char *)esp8266_rx_buf, res) !&#061; NULL)\/\/\u5224\u65ad\u662f\u5426\u53c8\u6709\u671f\u5f85\u7684\u5b57\u7b26\u4e32<br \/>\n    return ESP8266_EOK<br \/>\n}<br \/>\n    return ESP8266_ERROR;<br \/>\n}<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u63a5\u6536\u6570\u636e<\/p>\n<p>void esp8266_receiv_data(void)<br \/>\n{<br \/>\n    if(esp8266_wait_receive() &#061; ESP8266_EOK)<br \/>\n    {<br \/>\n    printf(&#034;esp8266 recv: %s\\\\r\\\\n&#034;,esp8266_rx_buf);<br \/>\n    esp8266_rx_clear();<br \/>\n    }<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u53d1\u9001\u4e0d\u5b9a\u957f\u6570\u636e<\/p>\n<p>void esp8266_send_data(char *fmt, &#8230;)<br \/>\n{<br \/>\n    va_list ap;<br \/>\n    uint16_len;<\/p>\n<p>    va_start(ap,fmt);<br \/>\n    vsprintf((char *)esp8266_tx_buf,fmt,ap);<br \/>\n    va_end(ap);<\/p>\n<p>    len &#061; strlen((const char*)esp8266_tx_buf);<br \/>\n    HAL__UART_Transmit(&amp;esp8266_handle,esp8266_tx_buf,len,100);\/\/ \u53d1\u9001<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">at\u6d4b\u8bd5\u6307\u4ee4<\/p>\n<p>uint8_t esp8266_at_test(void)<br \/>\n{<br \/>\n    return esp8266_send_command(&#034;AT\\\\r\\\\n&#034;, &#034;OK&#034;);\/\/\u8bb0\u5f97\u52a0\u56de\u8f66<br \/>\n}<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u6a21\u5f0f\u8bbe\u7f6e\u51fd\u6570\u5c01\u88c5<\/p>\n<p>uint8_t esp8266_set_mode(uint8_t mode)<br \/>\n{<br \/>\n    switch(mode)<br \/>\n{<br \/>\n    case ESP8266_STA_MODE:<br \/>\n        return esp8266_send_command(&#034;AT&#043;CWMODE&#061;1\\\\r\\\\n&#034;);<br \/>\n    case ESP8266_AP_MODE:<br \/>\n        return esp8266_send_command(&#034;AT&#043;CWMODE&#061;2\\\\r\\\\n&#034;);<br \/>\n    case ESP8266_STA_AP_MODE:<br \/>\n        return esp8266_send_command(&#034;AT&#043;CWMODE&#061;3\\\\r\\\\n&#034;);<br \/>\n    default:<br \/>\n        return esp8266_EINVL;<br \/>\n}<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u52a0\u5165\u670d\u52a1\u5668\u8f93\u5165\u8d26\u53f7\u5bc6\u7801<\/p>\n<p>uint8_t esp8266_join_ap(char *ssid,char *pwd)<br \/>\n{<br \/>\n    char cmd[64];<br \/>\n    sprintf(cmd, &#034;AT&#043;CWJAP&#061;\\\\&#034;%s\\\\&#034;,\\\\&#034;%s\\\\&#034;\\\\r\\\\n&#034;,ssid,pwd);\/\/\u4f5c\u4e3a\u6a21\u5f0f\u4f20\u8f93\u8fdb\u5165<br \/>\n    return esp8266_send_command(cmd.&#034;OK&#034;);<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u8bbe\u7f6e\u5355\u8def\u8fde\u63a5\u7684esp8266\u8fde\u63a5\u6a21\u5f0f<\/p>\n<p>\/*\u8bbe\u7f6e\u5355\u8def\u8fde\u63a5\u7684\u6a21\u5f0f&#xff08;\u900f\u4f20\u53ea\u80fd\u7528\u6b64\u6a21\u5f0f&#xff09;*\/<br \/>\nuint8_t esp8266_connect_mode(uint8_t mode)<br \/>\n{<br \/>\n    char cmd[64];<br \/>\n    sprintf(cmd,&#034;AT&#043;CIPMUX&#061;%d\\\\r\\\\n&#034;,mode);<br \/>\n    return esp8266_send_command(cmd,&#034;OK&#034;);\/\/\u53d1\u9001cmd\u6307\u4ee4\u671f\u5f85\u56de\u590dOK<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u8fde\u63a5tcp\u670d\u52a1\u5668<\/p>\n<p>uint8_t esp8266_connect_tcp_sever(char *server_ip,char *server port)<br \/>\n{<br \/>\n    char cmd[64];<br \/>\n    sprintf(cmd,&#034;AT&#043;CIPSTART&#061;\\\\&#034;TCP\\\\&#034;,\\\\&#034;%s\\\\&#034;,%s\\\\r\\\\n&#034;,server_ip,server_port);<br \/>\n    return esp8266_send_command,&#034;CONNECT&#034;);<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u8fdb\u5165\u900f\u4f20\u6a21\u5f0f<\/p>\n<p>uint8_t esp8266_enter_unvarnished(void)\/\/\u8fdb\u5165\u900f\u4f20\u6a21\u5f0f<br \/>\n{<br \/>\n    uint8_t ret;<\/p>\n<p>    ret  &#061;  esp8266_send_command(&#034;AT&#043;CIPMODE&#061;1\\\\r\\\\n&#034;,&#034;OK&#034;);<br \/>\n    ret &#043;&#061;  esp8266_send_command(&#034;AT&#043;CIPSEND\\\\r\\\\n&#034;,&#034;&gt;&#034;);\/\/\u8c03\u7528\u6307\u4ee4\u51fd\u6570<br \/>\n    if(ret &#061;&#061; ESP8266_EOK)<br \/>\n        return ESP8266_EOK;<br \/>\n    else<br \/>\n        return ESP8266_ERROR;<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">esp8266\u521d\u59cb\u5316<\/p>\n<p>uint8_t esp8266_init(uint32_t baudrate)<br \/>\n{<br \/>\n    printf(&#034;esp8266\u521d\u59cb\u5316\u5f00\u59cb&#8230;\\\\r\\\\n&#034;);<br \/>\n    esp8266_init_uart(baudrate);<\/p>\n<p>    printf(&#034;1. \u6d4b\u8bd5esp8266\u662f\u5426\u5b58\u5728\\\\r\\\\n&#034;)<br \/>\n    while(esp8266_at_test())<br \/>\n        delay_ms(500);<\/p>\n<p>    printf(&#034;2. \u8bbe\u7f6e\u5de5\u4f5c\u6a21\u5f0f\u4e3aSTA&#8230;\\\\r\\\\n&#034;);<br \/>\n    while(esp8266_set_mode(ESP8266_STA_MODE)<br \/>\n        delay_ms(500);<\/p>\n<p>    printf(&#034;3. \u8bbe\u7f6e\u5355\u8def\u94fe\u63a5\u6a21\u5f0f\\\\r\\\\n&#034;);<br \/>\n    while(esp8266_connect_mode(ESP8266_SINGLE_CONNECTION))<br \/>\n    delay_ms(500);<\/p>\n<p>    printf(&#034;4. \u8fde\u63a5wifi,SSID: %s ,PWD:%s\\\\r\\\\n&#034;,WIFI_SSID,WIFI_PWD);<br \/>\n    while(esp8266_join_ap(WIFI_SSID,WIFI,PWD))<br \/>\n    delay_ms(1500);\/\/\u65f6\u95f4\u957f\u4e00\u4e9b<\/p>\n<p>    printf(&#034;6. \u8fdb\u5165\u900f\u4f20\u6a21\u5f0f&#8230;\\\\r\\\\n&#034;);<br \/>\n    while(esp8266_enter_unvarnished())<br \/>\n    delay_ms(500);<\/p>\n<p>    print(&#034;esp8266\u5df2\u7ecf\u8fde\u63a5\u4e0atcp\u670d\u52a1\u5668\u5e76\u8fdb\u5165\u900f\u4f20\u6a21\u5f0f&#034;)<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u6d4b\u8bd5\u51fd\u6570<\/p>\n<p>void esp8266_test(void)<br \/>\n{<br \/>\nesp8266_send_data(&#034;this is from esp8266\\\\r\\\\n&#034;);<br \/>\nesp8266_receiv_data();<br \/>\n}<\/p>\n<p style=\"margin-left:0;text-align:justify\">main\u51fd\u6570<\/p>\n<p>#include &#034;delay.h&#034;<br \/>\n#include &#034;led.h&#034;<br \/>\n#include &#034;uart1.h&#034;<br \/>\n#include &#034;esp8266.h&#034;<br \/>\nint main(void)<br \/>\n{<br \/>\n    HAL_Init();                         \/* \u521d\u59cb\u5316HAL\u5e93 *\/<br \/>\n    stm32_clock_init(RCC_PLL_MUL9); \/* \u8bbe\u7f6e\u65f6\u949f, 72Mhz *\/<br \/>\n    led_init();\/* LED\u521d\u59cb\u5316 *\/<\/p>\n<p>uart1_init(115200);<br \/>\nesp8266_init(115200);<br \/>\nprintf(&#034;helloworld!\\\\r\\\\n&#034;);<br \/>\n    while(1)<br \/>\n    {<br \/>\nesp8266_test();<br \/>\ndelay_ms(500);<br \/>\n    }<br \/>\n}<\/p>\n<p style=\"margin-left:0;text-align:justify\">2. ESP8266\u4f5c\u4e3a\u670d\u52a1\u5668<\/p>\n<p style=\"margin-left:0;text-align:justify\">USB\u8f6cTTL\u63d2\u5165\u7535\u8111&#xff0c;TX&#8211;RX RX-TX VCC-3.3V GND-GND<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u67e5\u8be2IP\u5730\u5740&#xff1a;AT&#043;CIFSR<\/p>\n<p style=\"margin-left:0;text-align:justify\">\/\/1 \u914d\u7f6e\u6210AP\u6a21\u5f0f<\/p>\n<p style=\"margin-left:0;text-align:justify\">AT&#043;CWMODE&#061;2<\/p>\n<p style=\"margin-left:0;text-align:justify\">Response :OK<\/p>\n<p style=\"margin-left:0;text-align:justify\">\/\/2 \u4f7f\u80fd\u591a\u94fe\u63a5<\/p>\n<p style=\"margin-left:0;text-align:justify\">AT&#043;CIPMUX&#061;1 Response :OK<\/p>\n<p style=\"margin-left:0;text-align:justify\">\/\/3 \u5efa\u7acbTCPServer<\/p>\n<p style=\"margin-left:0;text-align:justify\">AT&#043;CIPSERVER&#061;1 \/\/ default port &#061; 333 Response :OK<\/p>\n<p style=\"margin-left:0;text-align:justify\">\/\/4 \u53d1\u9001\u6570\u636e<\/p>\n<p style=\"margin-left:0;text-align:justify\">AT&#043;CIPSEND&#061;0,4\u00a0 \u00a0 \u00a0 \/\/ \u53d1\u90014\u4e2a\u5b57\u8282\u5728\u8fde\u63a50\u901a\u9053\u4e0a &gt;abcd\/\/\u8f93\u5165\u6570\u636e&#xff0c;<\/p>\n<p style=\"margin-left:0;text-align:justify\">Response :SEND OK \/\/\u4e0d\u5e26\u56de\u8f66<\/p>\n<p style=\"margin-left:0;text-align:justify\">\/\/5 \u63a5\u6536\u6570\u636e<\/p>\n<p style=\"margin-left:0;text-align:justify\">&#043;IPD, 0, n: xxxxxxxxxx \/\/&#043;IPD\u662f\u56fa\u5b9a\u5b57\u7b26\u4e32 0\u662f\u901a\u9053&#xff0c;n\u662f\u6570\u636e\u957f\u5ea6&#xff0c;xxx\u662f\u6570\u636e<\/p>\n<p style=\"margin-left:0;text-align:justify\">\/\/\u65ad\u5f00\u8fde\u63a5<\/p>\n<p style=\"margin-left:0;text-align:justify\">AT&#043;CIPCLOSE&#061;0<\/p>\n<p style=\"margin-left:0;text-align:justify\">Response :0, CLOSED OK<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u00a0\u5934\u6587\u4ef6<\/p>\n<p>#include &#034;sys.h&#034;<br \/>\n#include &#034;esp8266.h&#034;<br \/>\n#include &#034;string.h&#034;<br \/>\n#include &#034;delay.h&#034;<br \/>\n#include &#034;stdarg.h&#034;<\/p>\n<p>uint8_t esp8266_tx_buf[ESP8266_TX_BUF_SIZE];<br \/>\nuint8_t esp8266_rx_buf[ESP8266_RX_BUF_SIZE]; <\/p>\n<p>uint16_t esp8266_cnt &#061; 0 ,esp8266_cntPre &#061; 0; \/* esp8266\u63a5\u6536\u7f13\u51b2\u533a *\/<\/p>\n<p>UART_HandleTypeDef esp8266_handle;             \/* esp8266\u53e5\u67c4 *\/ <\/p>\n<p style=\"margin-left:0;text-align:justify\">esp8266\u4e32\u53e3\u521d\u59cb\u5316\u914d\u7f6e<\/p>\n<p>void esp8266_uart_init(uint32_t baudrate)\/\/\u6b63\u5e38\u4f1a\u6709\u542f\u52a8\u7684\u6d41\u7a0b\u53ea\u662f\u4f5c\u4e3a\u4e00\u4e2a\u4e32\u53e3\u7684\u521d\u59cb\u5316<br \/>\n{<br \/>\n    \/*esp8266 \u521d\u59cb\u5316\u8bbe\u7f6e*\/<br \/>\n    esp8266_handle.Instance &#061; USART2;                               \/* USART1 *\/<br \/>\n    esp8266_handle.Init.BaudRate &#061; baudrate;                        \/* \u6ce2\u7279\u7387 *\/<br \/>\n    esp8266_handle.Init.WordLength &#061; UART_WORDLENGTH_8B;            \/* \u5b57\u957f\u4e3a8\u4f4d\u6570\u636e\u683c\u5f0f*\/<br \/>\n    esp8266_handle.Init.StopBits &#061; UART_STOPBITS_1;                 \/* \u4e00\u4e2a\u505c\u6b62\u4f4d *\/<br \/>\n    esp8266_handle.Init.Parity &#061; UART_PARITY_NONE;                  \/* \u65e0\u5947\u5076\u6821\u9a8c\u4f4d *\/<br \/>\n    esp8266_handle.Init.HwFlowCtl &#061; UART_HWCONTROL_NONE;            \/* \u65e0\u786c\u4ef6\u6d41\u63a7 *\/<br \/>\n    esp8266_handle.Init.Mode &#061; UART_MODE_TX_RX;                     \/* \u6536\u53d1\u6a21\u5f0f *\/<br \/>\n    HAL_UART_Init(&amp;esp8266_handle);                                 \/*\u4f1a\u4f7f\u80fdesp8266 *\/<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u63a5\u6536\u7f13\u51b2\u533a\u914d\u7f6e<\/p>\n<p>void esp8266_rx_clear(void)<br \/>\n{<br \/>\n    memset(esp8266_rx_buf, 0, sizeof(esp8266_rx_buf)); \/* \u6e05\u7a7a\u63a5\u6536\u7f13\u51b2\u533a *\/<br \/>\n    esp8266_cnt &#061; 0;                                   \/* \u63a5\u6536\u8ba1\u6570\u5668\u6e05\u96f6 *\/<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u4e2d\u65ad\u670d\u52a1\u51fd\u6570<\/p>\n<p>void USART2_IRQHandler(void)<br \/>\n{<br \/>\n    uint8_t receive_data &#061; 0;<br \/>\n    if(__HAL_UART_GET_FLAG(&amp;esp8266_handle, UART_FLAG_RXNE) !&#061; RESET){\/* \u83b7\u53d6\u63a5\u6536RXNE\u6807\u5fd7\u4f4d\u662f\u5426\u88ab\u7f6e\u4f4d *\/<br \/>\n        if(esp8266_cnt &gt;&#061; sizeof(esp8266_rx_buf))                     \/* \u5982\u679c\u63a5\u6536\u7684\u5b57\u7b26\u6570\u5927\u4e8e\u63a5\u6536\u7f13\u51b2\u533a\u5927\u5c0f&#xff0c; *\/<br \/>\n            esp8266_cnt &#061; 0;                                          \/* \u5219\u5c06\u63a5\u6536\u8ba1\u6570\u5668\u6e05\u96f6 *\/<br \/>\n        HAL_UART_Receive(&amp;esp8266_handle, &amp;receive_data, 1, 1000);    \/* \u63a5\u6536\u4e00\u4e2a\u5b57\u7b26 *\/<br \/>\n        esp8266_rx_buf[esp8266_cnt&#043;&#043;] &#061; receive_data;    \/* \u5c06\u63a5\u6536\u5230\u7684\u5b57\u7b26\u4fdd\u5b58\u5728\u63a5\u6536\u7f13\u51b2\u533a *\/<br \/>\n    }<\/p>\n<p>    if (__HAL_UART_GET_FLAG(&amp;esp8266_handle, UART_FLAG_IDLE) !&#061; RESET) \/* \u83b7\u53d6\u63a5\u6536\u7a7a\u95f2\u4e2d\u65ad\u6807\u5fd7\u4f4d\u662f\u5426\u88ab\u7f6e\u4f4d *\/<br \/>\n    {<br \/>\n        printf(&#034;recv: %s\\\\r\\\\n&#034;, esp8266_rx_buf);                  \/* \u5c06\u63a5\u6536\u5230\u7684\u6570\u636e\u6253\u5370\u51fa\u6765 *\/<br \/>\n        esp8266_rx_clear();<br \/>\n        __HAL_UART_CLEAR_IDLEFLAG(&amp;esp8266_handle);              \/* \u6e05\u9664UART\u603b\u7ebf\u7a7a\u95f2\u4e2d\u65ad *\/<br \/>\n    }<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u7b49\u5f85\u63a5\u6536\u51fd\u6570<\/p>\n<p>uint8_t esp8266_wait_receive(void)<br \/>\n{<br \/>\nif(esp8266_cnt &#061;&#061; 0)<br \/>\nreturn ESP8266_ERROR;<br \/>\nif(esp8266_cnt &#061;&#061; esp8266_cntPre)<br \/>\n{<br \/>\nesp8266_cnt &#061; 0;<br \/>\nreturn ESP8266_EOK;<br \/>\n}<br \/>\nesp8266_cntPre &#061; esp8266_cnt;<br \/>\nreturn ESP8266_ERROR;<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u53d1\u9001\u6307\u4ee4\u5e76\u671f\u5f85\u8fd4\u56de\u503c<\/p>\n<p>uint8_t esp8266_send_command(char *cmd,char *res)\/\/\u53d1\u9001\u4e00\u4e2a\u6307\u4ee4\u53bb   \u5728\u6307\u5b9a\u65f6\u95f4\u5185\u8fd4\u56de\u56de\u6765 \u5426\u5219\u6ca1\u6709\u63a5\u6536\u5230\u4e00\u4e2a\u8fd4\u56de\u503c<br \/>\n{<br \/>\nuint8_t timeout_out &#061; 250;<\/p>\n<p>esp8266_rx_clear(); \/\/\u9632\u6b62\u5fcd\u5fc3\u5185\u7684\u6570\u636e\u5f71\u54cd<br \/>\nHAL_UART_Transmit(&amp;esp8266_handle,(uint8_t *)cmd,strlen(cmd),100);\/\/\u53d1\u9001\u547d\u4ee4 cmd\u5728\u8fd9\u91cc\u662f\u4e00\u4e2auint8_t\u7684\u6570\u636e \u957f\u5ea6 \u963b\u585e\u7684\u503c<br \/>\n\/\/\u7b49\u5f85<br \/>\nwhile(timeout_out&#8211;)\/\/\u4e0d\u505c\u7684\u7b49\u5f85<br \/>\n{<br \/>\nif(esp8266_wait_receive() &#061;&#061; ESP8266_EOK)<br \/>\n{<br \/>\nif(strstr((const char*)esp8266_rx_buf, res) !&#061; NULL)\/\/\u5224\u65ad\u662f\u5426\u53c8\u6709\u671f\u5f85\u7684\u5b57\u7b26\u4e32<br \/>\nreturn ESP8266_EOK;<br \/>\n}<br \/>\ndelay_ms(10);<br \/>\n}<br \/>\nreturn ESP8266_ERROR;\/\/\u5426\u5219\u63a5\u6536\u9519\u8bef<\/p>\n<p>}<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u63a5\u6536\u6570\u636e<\/p>\n<p>\/\/\u63a5\u6536\u7684\u51fd\u6570<br \/>\nvoid esp8266_receiv_data(void)<br \/>\n{<br \/>\nif(esp8266_wait_receive() &#061;&#061; ESP8266_EOK)<br \/>\n{<br \/>\nprintf(&#034;esp8266 recv: %s\\\\r\\\\n&#034;, esp8266_rx_buf);<br \/>\nesp8266_rx_clear();<br \/>\n}<br \/>\n}<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u53d1\u9001\u4e0d\u5b9a\u957f\u6570\u636e<\/p>\n<p>\/\/\u53d1\u9001\u7684\u51fd\u6570  \u4e0d\u5b9a\u957f\u6570\u636e \u53c2\u6570\u4e0d\u56fa\u5b9a<br \/>\nvoid esp8266_send_data(char *fmt, &#8230;)<br \/>\n{<br \/>\nva_list ap;<br \/>\nuint16_t len;<\/p>\n<p>va_start(ap,fmt);<br \/>\nvsprintf((char *)esp8266_tx_buf,fmt, ap);<br \/>\nva_end(ap);<\/p>\n<p>len &#061; strlen((const char*)esp8266_tx_buf);<br \/>\nHAL_UART_Transmit(&amp;esp8266_handle, esp8266_tx_buf, len,100);\/\/\u53d1\u9001<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u8bbe\u7f6ea\u6a21\u5757\u662f\u5426\u5b58\u5728\u6d4b\u8bd5<\/p>\n<p>uint8_t esp8266_at_test(void)<br \/>\n{<br \/>\nreturn esp8266_send_command(&#034;AT\\\\r\\\\n&#034;, &#034;OK&#034;);\/\/\u8bb0\u5f97\u52a0\u56de\u8f66\u6362\u884c\u624d\u80fd\u4f5c\u4e3a\u6307\u4ee4\u53d1\u9001\u671f\u5f85\u8fd4\u56de\u503c\u4e3aOK  \u76f4\u63a5\u4f5c\u4e3a\u8fd4\u56de\u503c\u53d1\u9001<\/p>\n<p>} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u8bbe\u7f6e\u6a21\u5f0f<\/p>\n<p>uint8_t esp8266_set_mode(uint8_t mode)\/\/s\u56db\u4e2a\u51fd\u6570<br \/>\n{<br \/>\nswitch(mode)<br \/>\n{<br \/>\ncase ESP8266_STA_MODE:<br \/>\nreturn esp8266_send_command(&#034;AT&#043;CWMODE&#061;1\\\\r\\\\n&#034;,&#034;OK&#034;);<\/p>\n<p>case ESP8266_AP_MODE:<br \/>\nreturn esp8266_send_command(&#034;AT&#043;CWMODE&#061;2\\\\r\\\\n&#034;,&#034;OK&#034;);<\/p>\n<p>case ESP8266_STA_AP_MODE:<br \/>\nreturn esp8266_send_command(&#034;AT&#043;CWMODE&#061;3\\\\r\\\\n&#034;,&#034;OK&#034;);<\/p>\n<p>default:<br \/>\nreturn ESP8266_EINVAL;\/\/\u5982\u679c\u6307\u4ee4\u4e0d\u5b58\u5728<br \/>\n}<br \/>\n}<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u52a0\u5165AP<\/p>\n<p>uint8_t esp8266_join_ap(char *ssid,char *pwd)\/\/\u8d26\u53f7\u5bc6\u7801<br \/>\n{<br \/>\nchar cmd[64];<br \/>\nsprintf(cmd, &#034;AT&#043;CWJAP&#061;\\\\&#034;%s\\\\&#034;,\\\\&#034;%s\\\\&#034;\\\\r\\\\n&#034;,ssid,pwd);\/\/\\\\&#034;HUAWEIAP-1\\\\&#034;,&#061;\\\\&#034;%s\\\\  \u5c31\u6307\u4ee4\u5e26\u5f15\u53f7\u76f4\u63a5\u5199\u4e0d\u884c&#xff0c;\u6211\u4eec\u9700\u8981\u5982\u6b64\u5c31\u4e0d\u4f1a\u5c06\u201c\u201d\u8ba4\u4e3a\u662f\u914d\u5bf9\u7684<br \/>\nreturn esp8266_send_command(cmd,&#034;WIFI GOT IP&#034;);;\/\/\u8c03\u7528\u6307\u4ee4\u51fd\u6570<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u8fde\u63a5\u6a21\u5f0f<\/p>\n<p>uint8_t esp8266_connect_mode(uint8_t mode)\/\/\u8bbe\u7f6e\u5355\u8def\u8fde\u63a5\u7684\u6a21\u5f0f&#xff08;\u900f\u4f20\u53ea\u80fd\u7528\u6b64\u6a21\u5f0f&#xff09;<br \/>\n{<br \/>\nchar cmd[64];<br \/>\nsprintf(cmd, &#034;AT&#043;CIPMUX&#061;%d\\\\r\\\\n&#034;,mode);\/\/\u4f5c\u4e3a\u6a21\u5f0f\u4f20\u8f93\u8fdb\u5165<br \/>\nreturn esp8266_send_command(cmd,&#034;OK&#034;);;\/\/\u8c03\u7528\u6307\u4ee4\u51fd\u6570<br \/>\n}<br \/>\n\/\/\u8fde\u63a5TCP\u670d\u52a1\u5668 <\/p>\n<p style=\"margin-left:0;text-align:justify\">esp8266_\u8fde\u63a5\u6a21\u5f0f<\/p>\n<p>uint8_t esp8266_connect_mode(uint8_t mode)\/\/\u8bbe\u7f6e\u5355\u8def\u8fde\u63a5\u7684\u6a21\u5f0f&#xff08;\u900f\u4f20\u53ea\u80fd\u7528\u6b64\u6a21\u5f0f&#xff09;<br \/>\n{<br \/>\nchar cmd[64];<br \/>\nsprintf(cmd, &#034;AT&#043;CIPMUX&#061;%d\\\\r\\\\n&#034;,mode);\/\/\u4f5c\u4e3a\u6a21\u5f0f\u4f20\u8f93\u8fdb\u5165<br \/>\nreturn esp8266_send_command(cmd,&#034;OK&#034;);;\/\/\u8c03\u7528\u6307\u4ee4\u51fd\u6570<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u00a0esp8266\u8fde\u63a5tpc\u670d\u52a1\u5668ip\u548c\u7aef\u53e3<\/p>\n<p>uint8_t esp8266_connect_tcp_server(char *server_ip,char*server_port)<br \/>\n{<br \/>\nchar cmd[64];<br \/>\nsprintf(cmd, &#034;AT&#043;CIPSTART&#061;\\\\&#034;TCP\\\\&#034;,\\\\&#034;%s\\\\&#034;,%s\\\\r\\\\n&#034;,server_ip,server_port);\/\/\u4f5c\u4e3a\u6a21\u5f0f\u4f20\u8f93\u8fdb\u5165<br \/>\nreturn esp8266_send_command(cmd,&#034;CONNECT&#034;);;\/\/\u8c03\u7528\u6307\u4ee4\u51fd\u6570<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u8fdb\u5165\u900f\u4f20\u6a21\u5f0f<\/p>\n<p>uint8_t esp8266_enter_unvarnished(void)\/\/\u53d1\u9001\u7684\u6a21\u5f0f<br \/>\n{<br \/>\nuint8_t ret;\/\/\u53d6\u5de7\u7684\u65b9\u5f0f\u5b9a\u4e49\u4e00\u4e2a\u8fd4\u56de\u503c<br \/>\n\/\/\u4e24\u6b21\u8fd4\u56de\u503c\u90fd\u7b49\u4e8e0&#xff0c;\u5982\u679c\u6709\u4e00\u4e2a\u4e0d\u4e3a0\u5c31\u4e3a\u4e0d\u4e3a\u96f6\u7684\u60c5\u51b5<br \/>\nret  &#061; esp8266_send_command(&#034;AT&#043;CIPMODE&#061;1\\\\r\\\\n&#034;,&#034;OK&#034;);;\/\/\u8c03\u7528\u6307\u4ee4\u51fd\u6570<br \/>\nret &#043;&#061; esp8266_send_command(&#034;AT&#043;CIPSEND\\\\r\\\\n&#034;,&#034;&gt;&#034;);;\/\/\u8c03\u7528\u6307\u4ee4\u51fd\u6570<br \/>\nif(ret &#061;&#061; ESP8266_EOK)<br \/>\nreturn ESP8266_EOK;<br \/>\nelse<br \/>\nreturn ESP8266_ERROR;<br \/>\n}<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u5efa\u7acbtcp\u670d\u52a1\u5668<\/p>\n<p>uint8_t esp8266_build_tcp_server(void)<br \/>\n{<br \/>\nreturn esp8266_send_command(&#034;AT&#043;CIPSERVER&#061;1\\\\r\\\\n&#034;,&#034;OK&#034;);\/\/\u53d1\u9001AT&#043;CIPSEVER&#061;1,\u671f\u5f85\u56de\u590dOK<br \/>\n}<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u521d\u59cb\u5316esp8266<\/p>\n<p>void esp8266_init(uint32_t baudrate)\/\/\u6240\u4ee5\u589e\u52a0\u65b0\u6dfb\u52a0\u4e00\u4e2a<br \/>\n{<br \/>\nprintf(&#034;esp8266\u521d\u59cb\u5316\u5f00\u59cb&#8230;\\\\r\\\\n&#034;);<br \/>\nesp8266_uart_init(baudrate);<\/p>\n<p>printf(&#034;1. \u6d4b\u8bd5esp8266\u662f\u5426\u5b58\u5728\\\\r\\\\n&#034;);<br \/>\nwhile(esp8266_at_test())\/\/esp8266_at_test();\u4e5f\u662f\u53ef\u4ee5\u7684\u4e0d\u8fc7\u4e00\u76f4\u4e0d\u6210\u529f\u90a3\u5c31\u4e00\u76f4\u7b49\u5f85\u66f4\u4e3a\u4fdd\u9669<br \/>\ndelay_ms(500);<\/p>\n<p>printf(&#034;2. \u8bbe\u7f6e\u5de5\u4f5c\u6a21\u5f0f\u4e3aAP&#8230;\\\\r\\\\n&#034;);<br \/>\nwhile(esp8266_set_mode(ESP8266_AP_MODE))<br \/>\ndelay_ms(500);<\/p>\n<p>printf(&#034;3. \u8bbe\u7f6e\u591a\u8def\u94fe\u63a5\u6a21\u5f0f\\\\r\\\\n&#034;);<br \/>\nwhile(esp8266_connect_mode(ESP8266_MULTI_CONNECTION))<br \/>\ndelay_ms(500);<br \/>\nprintf(&#034;4. \u5efa\u7acbTCP\u670d\u52a1\u5668&#8230;\\\\r\\\\n&#034;);<br \/>\nwhile(esp8266_build_tcp_server())<br \/>\ndelay_ms(500);<\/p>\n<p>printf(&#034;esp8266\u521d\u59cb\u5316\u5b8c\u6210&#8230;\\\\r\\\\n&#034;);<\/p>\n<p>\/\/esp8266\u7684\u5176\u4ed6\u521d\u59cb\u5316<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">esp8266\u521d\u59cb\u5316\u6d4b\u8bd5<\/p>\n<p>\/\/\u6d4b\u8bd5\u51fd\u6570<br \/>\nvoid esp8266_test(void)<br \/>\n{<br \/>\nesp8266_send_data(&#034;this is from esp8266\\\\r\\\\n&#034;);<br \/>\nesp8266_receiv_data();<br \/>\n} <\/p>\n<p style=\"margin-left:0;text-align:justify\">\u00a0<\/p>\n<p style=\"margin-left:0;text-align:justify\">\u00a0<\/p>\n<p>\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb1.6k\u6b21\uff0c\u70b9\u8d5e14\u6b21\uff0c\u6536\u85cf29\u6b21\u3002AT+CIPSTART=&quot;TCP&quot;,&quot;192.168.1.18&quot;,8080 \/\/\u6307\u4ee4\uff0c\u6ce8\u610f\u53cc\u5f15\u53f7\u9017\u53f7\u90fd\u8981\u534a\u89d2(\u82f1\u6587)\u8f93\u5165 CONNECT \/\/\u7ed3\u679c\uff1a\u6210\u529f OK \/\/\u7ed3\u679c\uff1a\u6210\u529f\u3002+IPD, 0, n: xxxxxxxxxx \/\/+IPD\u662f\u56fa\u5b9a\u5b57\u7b26\u4e32 0\u662f\u901a\u9053\uff0cn\u662f\u6570\u636e\u957f\u5ea6\uff0cxxx\u662f\u6570\u636e\u3002AT+CIPSEND=0,4      \/\/ \u53d1\u90014\u4e2a\u5b57\u8282\u5728\u8fde\u63a50\u901a\u9053\u4e0a &gt;abcd\/\/\u8f93\u5165\u6570\u636e\uff0c\uff0f\uff0f\u6ce8\u610f\uff0c\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u6bcf\u6b21\u53d1\u9001\u524d\u90fd\u8981\u7ebf\u53d1\u9001\uff21\uff34\uff0b\uff23\uff29\uff30\uff33\uff25\uff2e\uff24\uff1d\u957f\u5ea6\uff0c\u7684\u6307\u4ee4\uff0c\u5728\u53d1\u6570\u636e\uff01AT+CIPSEND \/\/\u5e26\u56de\u8f66\u3002_esp8266 tcp\u670d\u52a1\u5668<\/p>\n","protected":false},"author":2,"featured_media":12365,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[217,676,205,43],"topic":[],"class_list":{"0":"post-12367","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-server","8":"tag-stm32","10":"tag-tcp-ip","11":"tag-43"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>stm32\u5b9e\u73b0esp8266\u8fde\u63a5\u5230TCP\u670d\u52a1\u5668\uff08\u4e8c\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/12367.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"stm32\u5b9e\u73b0esp8266\u8fde\u63a5\u5230TCP\u670d\u52a1\u5668\uff08\u4e8c\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb1.6k\u6b21\uff0c\u70b9\u8d5e14\u6b21\uff0c\u6536\u85cf29\u6b21\u3002AT+CIPSTART=&quot;TCP&quot;,&quot;192.168.1.18&quot;,8080 \/\/\u6307\u4ee4\uff0c\u6ce8\u610f\u53cc\u5f15\u53f7\u9017\u53f7\u90fd\u8981\u534a\u89d2(\u82f1\u6587)\u8f93\u5165 CONNECT \/\/\u7ed3\u679c\uff1a\u6210\u529f OK \/\/\u7ed3\u679c\uff1a\u6210\u529f\u3002+IPD, 0, n: xxxxxxxxxx \/\/+IPD\u662f\u56fa\u5b9a\u5b57\u7b26\u4e32 0\u662f\u901a\u9053\uff0cn\u662f\u6570\u636e\u957f\u5ea6\uff0cxxx\u662f\u6570\u636e\u3002AT+CIPSEND=0,4   \/\/ \u53d1\u90014\u4e2a\u5b57\u8282\u5728\u8fde\u63a50\u901a\u9053\u4e0a &gt;abcd\/\/\u8f93\u5165\u6570\u636e\uff0c\uff0f\uff0f\u6ce8\u610f\uff0c\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u6bcf\u6b21\u53d1\u9001\u524d\u90fd\u8981\u7ebf\u53d1\u9001\uff21\uff34\uff0b\uff23\uff29\uff30\uff33\uff25\uff2e\uff24\uff1d\u957f\u5ea6\uff0c\u7684\u6307\u4ee4\uff0c\u5728\u53d1\u6570\u636e\uff01AT+CIPSEND \/\/\u5e26\u56de\u8f66\u3002_esp8266 tcp\u670d\u52a1\u5668\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/12367.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-18T11:32:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418113201-6802383114593.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/12367.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/12367.html\",\"name\":\"stm32\u5b9e\u73b0esp8266\u8fde\u63a5\u5230TCP\u670d\u52a1\u5668\uff08\u4e8c\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2025-04-18T11:32:02+00:00\",\"dateModified\":\"2025-04-18T11:32:02+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/12367.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/12367.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/12367.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"stm32\u5b9e\u73b0esp8266\u8fde\u63a5\u5230TCP\u670d\u52a1\u5668\uff08\u4e8c\uff09\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"stm32\u5b9e\u73b0esp8266\u8fde\u63a5\u5230TCP\u670d\u52a1\u5668\uff08\u4e8c\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/12367.html","og_locale":"zh_CN","og_type":"article","og_title":"stm32\u5b9e\u73b0esp8266\u8fde\u63a5\u5230TCP\u670d\u52a1\u5668\uff08\u4e8c\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb1.6k\u6b21\uff0c\u70b9\u8d5e14\u6b21\uff0c\u6536\u85cf29\u6b21\u3002AT+CIPSTART=&quot;TCP&quot;,&quot;192.168.1.18&quot;,8080 \/\/\u6307\u4ee4\uff0c\u6ce8\u610f\u53cc\u5f15\u53f7\u9017\u53f7\u90fd\u8981\u534a\u89d2(\u82f1\u6587)\u8f93\u5165 CONNECT \/\/\u7ed3\u679c\uff1a\u6210\u529f OK \/\/\u7ed3\u679c\uff1a\u6210\u529f\u3002+IPD, 0, n: xxxxxxxxxx \/\/+IPD\u662f\u56fa\u5b9a\u5b57\u7b26\u4e32 0\u662f\u901a\u9053\uff0cn\u662f\u6570\u636e\u957f\u5ea6\uff0cxxx\u662f\u6570\u636e\u3002AT+CIPSEND=0,4   \/\/ \u53d1\u90014\u4e2a\u5b57\u8282\u5728\u8fde\u63a50\u901a\u9053\u4e0a &gt;abcd\/\/\u8f93\u5165\u6570\u636e\uff0c\uff0f\uff0f\u6ce8\u610f\uff0c\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u6bcf\u6b21\u53d1\u9001\u524d\u90fd\u8981\u7ebf\u53d1\u9001\uff21\uff34\uff0b\uff23\uff29\uff30\uff33\uff25\uff2e\uff24\uff1d\u957f\u5ea6\uff0c\u7684\u6307\u4ee4\uff0c\u5728\u53d1\u6570\u636e\uff01AT+CIPSEND \/\/\u5e26\u56de\u8f66\u3002_esp8266 tcp\u670d\u52a1\u5668","og_url":"https:\/\/www.wsisp.com\/helps\/12367.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2025-04-18T11:32:02+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418113201-6802383114593.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"8 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/12367.html","url":"https:\/\/www.wsisp.com\/helps\/12367.html","name":"stm32\u5b9e\u73b0esp8266\u8fde\u63a5\u5230TCP\u670d\u52a1\u5668\uff08\u4e8c\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2025-04-18T11:32:02+00:00","dateModified":"2025-04-18T11:32:02+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/12367.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/12367.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/12367.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"stm32\u5b9e\u73b0esp8266\u8fde\u63a5\u5230TCP\u670d\u52a1\u5668\uff08\u4e8c\uff09"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/12367","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=12367"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/12367\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/12365"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=12367"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=12367"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=12367"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=12367"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}