esp8266使用透传模式,在局域网的范围内,将数据传至上位机。
at指令的发送顺序为
AT+CWMODE=1
AT+RST
AT+CWJAP=”public”,”123456789” //连入局域网
public 局域网的名字
AT+CIPMUX=0
AT+CIPMODE=1
AT+CIPSTART=”TCP”,”192.168.43.136”,8080 //连接上服务器
(此处使用的IP服务端查询到的随机分配给客户端的IP)
AT+CIPSEND
pc调试助手的使用
1,先关闭电脑的防火墙
2,连接至和esp8266的同一个wifi
3。选择tcp server
4,设置 ip 地址和端口号。
经过以上的步骤 ,
即可实现通过串口助手和调试助手的通讯。
如图所示
最后将esp8266连接至stm32 进行调试
uart.h的程序如下图
使用的是串口2
void USART_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
// ´ò¿ª´®¿ÚGPIOµÄʱÖÓ
DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE);
// ´ò¿ª´®¿ÚÍâÉèµÄʱÖÓ
DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);
// ½«USART TxµÄGPIOÅäÖÃΪÍÆÍ츴ÓÃģʽ
GPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure);
// ½«USART RxµÄGPIOÅäÖÃΪ¸¡¿ÕÊäÈëģʽ
GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure);
// ÅäÖô®¿ÚµÄ¹¤×÷²ÎÊý
// ÅäÖò¨ÌØÂÊ
USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;
// ÅäÖà ÕëÊý¾Ý×Ö³¤
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
// ÅäÖÃֹͣλ
USART_InitStructure.USART_StopBits = USART_StopBits_1;
// ÅäÖÃУÑéλ
USART_InitStructure.USART_Parity = USART_Parity_No ;
// ÅäÖÃÓ²¼þÁ÷¿ØÖÆ
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
// ÅäÖù¤×÷ģʽ£¬ÊÕ·¢Ò»Æð
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
// Íê³É´®¿ÚµÄ³õʼ»¯ÅäÖÃ
USART_Init(DEBUG_USARTx, &USART_InitStructure);
// ´®¿ÚÖжÏÓÅÏȼ¶ÅäÖÃ
NVIC_Configuration();
// ʹÄÜ´®¿Ú½ÓÊÕÖжÏ
USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);
// ʹÄÜ´®¿Ú
USART_Cmd(DEBUG_USARTx, ENABLE);
// Çå³ý·¢ËÍÍê³É±êÖ¾
//USART_ClearFlag(USART1, USART_FLAG_TC);
}
在这里插入代码片
在主函数里面实现发送命令的函数
``c
void send_string(USART_TypeDef* USARTx,char *str)
{
while(*str!='\0')
{
USART_SendData(USARTx,*str);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)==RESET)
{}
str++;
}
``参数一是 串口2
参数二是要发送的命令
主函数
USART_Config();
send_string(DEBUG_USARTx," AT+CWMODE=1\r\n");
delay();delay();delay();delay();delay();delay();delay();delay();
send_string(DEBUG_USARTx," AT+RST\r\n");
delay();delay();delay();delay();delay();delay();delay();delay();
/* ·¢ËÍÒ»¸ö×Ö·û´® */
Usart_SendString( DEBUG_USARTx,"AT+CWJAP=\"gg\",\"cnm1234566\"\r\n");
delay();delay();delay();delay();delay();delay();delay();delay();delay();delay();delay();delay();
Usart_SendString( DEBUG_USARTx,"AT+CIPMUX=0\r\n");
delay();delay();delay();delay();delay();delay();delay();delay();
Usart_SendString( DEBUG_USARTx,"AT+CIPMODE=1\r\n");
delay();delay();delay();delay();delay();delay();delay();delay();
Usart_SendString( DEBUG_USARTx,"AT+CIPSTART=\"TCP\",\"192.168.43.174\",2222\r\n");
delay();delay();delay();delay();delay();delay();delay();delay();
Usart_SendString( DEBUG_USARTx,"AT+CIPSEND\r\n");
delay();delay();delay();delay();delay();delay();delay();delay();
while(1)
{
Usart_SendString( DEBUG_USARTx,"hello\r\n");
delay(); delay();delay();delay();delay();delay();delay();delay();delay();
delay(); delay();delay();delay();delay();delay();delay();delay();delay();
}
}
按照at指令的一步步的初始化
在while里面持续发送一个hello
就可以在上位机收到字符了。
如图 ,调试助手收到了 hello
一个局域网的esp8266传输就完成了
需要代码的朋友
可以加我的qq 1925452496 加的时候备注一下