OpenEdv-开源电子网

标题: esp8266初始化问题 [打印本页]

作者: 绝世大坑    时间: 2019-2-18 22:08
标题: esp8266初始化问题
小白一枚,求各位大神指点。
利用stm32对esp8266写AT指令进行初始化失败,用串口调试助手发现指令已经发出,且无误。
#include "stm32f10x.h"
#include "esp8266.h"
#include "delay.h"
void Send_data(char *s)
{
while(*s!='\0')
{
  while(USART_GetFlagStatus(USART1,USART_FLAG_TC )==RESET);
  USART_SendData(USART1,*s);
  s++;
}
}
void My_esp8266_init(void)
{
     Send_data("AT+CWMODE=2\r\n");
     
     Send_data("AT+RST\r\n");
     
     Send_data("AT+CWSAP=\"i\",\"123456789\",1,3\r\n");
     
     Send_data("AT+CIPMUX=1\r\n");
     
     Send_data("AT+CIPSERVER=1,8086\r\n");

main.c文件如下

#include "stm32f10x.h"
#include  "led.h"
#include  "delay.h"
#include  "esp8266.h"
#include  "uart.h"
extern void My_esp8266_init(void);
extern void My_uart_init(void);
int main(void)
{
My_uart_init();
My_esp8266_init();

     
}

作者: 正点原子    时间: 2019-2-19 01:34
帮顶
作者: IOTzhang123    时间: 2019-3-1 12:56
你这个是发送间隔太长了吧~让esp8266以为是一个个的传过来的
作者: 绝世大坑    时间: 2019-3-1 16:39
IOTzhang123 发表于 2019-3-1 12:56
你这个是发送间隔太长了吧~让esp8266以为是一个个的传过来的

那该怎么处理,求指教
作者: fan666    时间: 2019-3-29 18:33
IOTzhang123 发表于 2019-3-1 12:56
你这个是发送间隔太长了吧~让esp8266以为是一个个的传过来的

这都没有间隔时间吧
作者: 尹林    时间: 2019-4-3 17:53
本帖最后由 尹林 于 2019-4-3 18:08 编辑

楼主你的代码看似没什么问题,就是不知道你写的这个代码是否符合该模块的操作流程,比如:发完一条指令之后需要等待应答才能发送下一条指令。

所以楼主给你几条建议:

1、你用别人家的Wi-Fi模块你就应该先去找这个厂家提供的驱动代码,如果找不到就联系这个公司的研发人员要求他们提供这个驱动代码,这是可以的。拿到驱动代码之后你就只需要移植底层串口部分的代码就可以了,上层的那些初始化代码,读写功能实现的什么代码呀,你都不需要动。你只需要调用上层的接口函数就好了

2、如果这个厂家的研发人员始终不给你驱动代码,那就需要你自己写驱动了,先去这个厂家的网站上下载这个模块的使用手册和指令集手册,然后再用USB转串口工具接上这个Wi-Fi模块在电脑端发指令试试,确定电脑端发指令模块能工作了,你再写代码到单片机里面去,这个时候你先别把Wi-Fi模块与单片机连接上,你先测试单片机能正常发出指令,最后确定都没问题了再把Wi-Fi模块与单片机连接上,先直接下载程序看看,如果还是跑不通就打断点一步一步调试。这样子搞基本都没问题了,除非是你的硬件设计不合理,硬件有问题。

作者: gertgesf    时间: 2019-6-5 17:08
尹林 发表于 2019-4-3 17:53
楼主你的代码看似没什么问题,就是不知道你写的这个代码是否符合该模块的操作流程,比如:发完一条指令之后 ...

良心评论啊




欢迎光临 OpenEdv-开源电子网 (http://www.openedv.com/) Powered by Discuz! X3.4