STM32F407使用ESP8266详细讲解(二)

STM32F4连接ESP8266无线通信(串口通信)

首先,本次用到两个串口。我使用的是普中STM32F407,第一个串口为USART1(PA2,PA3)串口一,就是数据线连接单片机和电脑时用的口。串口三USART3(PB10TX,PB11RX)在使用时,将原来在USB转TTL上的RX,TX线连接到PB10,PB11上,其他3.3v和GND也必须连接在开发板上。不需要再用AT指令更改,直接连下图线。前提是自己用的程序也是串口三的。
在这里插入图片描述
讲讲工作原理吧,开发板通过串口三发送AT指令程序,包含了使用USB转TTL时的所有AT指令,包括退出透传指令。统统发送。那么ESP8266收到这些AT指令后,会进行配置。等配置成功过后。就可以通过程序发送你想要发送的数据,你就可以大显身手可。那么你是不能像用USB转TTL一样,用串口调试助手来发送数据的切记。
下面看看要发送的哪些AT程序,串口配置的程序片段。

void esp8266_start_trans(void)
{
    atk_8266_send_cmd("AT+CWMODE=1","OK",50);
    atk_8266_send_cmd("AT+RST","ready",100);	
	delay_ms(1000);
	delay_ms(1000);
	delay_ms(1000);
	delay_ms(1000);
	while(atk_8266_send_cmd("AT+CWJAP=\"123456\",\"88888888\"","WIFI GOT IP",800));
	atk_8266_send_cmd("AT+CIPMUX=0","OK",20);
	while(atk_8266_send_cmd("AT+CIPSTART=\"TCP\",\"192.168.43.5\",8086","OK",200));
	atk_8266_send_cmd("AT+CIPMODE=1","OK",200);
	atk_8266_send_cmd("AT+CIPSEND","ND",50);	
}	

这里面通过send_cmd将AT指令发送出去,来连接电脑的wifi和虚拟串口号。
下面是串口1配置。你要不是STM32F407板子是不能用这些程序的,因为GPIO口挂接的线都不一样`在这里插入代码片
串口3配置和串口1大同小异,就不增加长度了。

void uart_init(u32 bound){
   //GPIO¶Ë¿ÚÉèÖÃ
  GPIO_InitTypeDef GPIO_InitStructure;
	USART_InitTypeDef USART_InitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;
	
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //ʹÄÜGPIOAʱÖÓ
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//ʹÄÜUSART1ʱÖÓ
 
	//´®¿Ú1¶ÔÓ¦Òý½Å¸´ÓÃÓ³Éä
	GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //GPIOA9¸´ÓÃΪUSART1
	GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //GPIOA10¸´ÓÃΪUSART1
	
	//USART1¶Ë¿ÚÅäÖÃ
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //GPIOA9ÓëGPIOA10
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//¸´Óù¦ÄÜ
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	//ËÙ¶È50MHz
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //ÍÆÍ츴ÓÃÊä³ö
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //ÉÏÀ­
	GPIO_Init(GPIOA,&GPIO_InitStructure); //³õʼ»¯PA9£¬PA10

   //USART1 ³õʼ»¯ÉèÖÃ
	USART_InitStructure.USART_BaudRate = bound;//²¨ÌØÂÊÉèÖÃ
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×Ö³¤Îª8λÊý¾Ý¸ñʽ
	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(USART1, &USART_InitStructure); //³õʼ»¯´®¿Ú1
	
  USART_Cmd(USART1, ENABLE);  //ʹÄÜ´®¿Ú1 
	
	USART_ClearFlag(USART1, USART_FLAG_TC);
	
#if EN_USART1_RX	
	USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//¿ªÆôÏà¹ØÖжÏ

	//Usart1 NVIC ÅäÖÃ
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//´®¿Ú1ÖжÏͨµÀ
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//ÇÀÕ¼ÓÅÏȼ¶3
	NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;		//×ÓÓÅÏȼ¶3
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQͨµÀʹÄÜ
	NVIC_Init(&NVIC_InitStructure);	//¸ù¾ÝÖ¸¶¨µÄ²ÎÊý³õʼ»¯VIC¼Ä´æÆ÷¡¢

#endif
	
}

下面看结果图片。
串口调试助手里是反馈字符
网络调试助手为程序发送的值,发送给ESP,又给网络助手的

目前,没有再入手单片机方向了,联系方式先下了。
因为此次使用ESP8266是课程设计,并不是一时兴起,查看过其他很多人的博客,很多人写的总是每个结果。我初时甚至不知道程序下载后应该是什么结果,什么现象都不知道,因此耗费了很多时间。
各位朋友,打个赏,点个收藏,让更多的人看到
下一篇为使用ESP8266无线传输激光测距的数据。已经完全做完了,但是没有时间写,我会抽个空写的。

  • 22
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 使用STM32F407驱动ESP8266模块可以通过串口通信实现。以下是大致的步骤: 1. 首先,配置STM32F407的串口通信参数,包括波特率、数据位、停止位和校验位等。将其连接到ESP8266模块的串口引脚上。 2. 设置STM32F407的GPIO引脚,用于控制ESP8266模块的复位和使能等功能。这些引脚可以通过STM32CubeMX进行配置。 3. 在代码中,使用STM32 HAL库的串口发送和接收函数,将指令发送到ESP8266模块,以控制其功能。例如,可以发送AT指令来检测ESP8266模块的回复,并获取其状态。 4. 处理ESP8266模块的回复数据。当ESP8266模块收到指令后,会通过串口将回复数据发送给STM32F407。我们可以使用串口中断或轮询的方式来接收和处理这些数据。 5. 解析ESP8266模块的回复数据,以获得所需的信息。例如,可以解析WiFi连接状态、接收到的数据等。 6. 根据需要,设计并实现额外的功能,例如WiFi模式切换、网络连接、数据传输等。 需要注意的是,ESP8266模块的固件版本可能会影响其指令集和功能支持。因此,您需要根据ESP8266模块的固件版本来选择合适的指令和协议。 实现STM32F407驱动ESP8266模块需要一定的嵌入式系统开发经验和对STM32ESP8266的了解。同时,还需要参考STM32F407ESP8266的官方文档和资料,以确保正确配置硬件和软件。 ### 回答2: 使用STM32F407驱动ESP8266模块需要进行以下步骤: 1. 准备硬件连接:将ESP8266模块的TX引脚连接至STM32F407的串口RX引脚,将ESP8266模块的RX引脚连接至STM32F407的串口TX引脚,同时将它们的地线连接起来。 2. 配置STM32F407串口:打开STM32F407开发环境,进入对应的配置界面,选择合适的串口(如USART1或USART2),设置波特率、数据位、停止位和校验位等参数。 3. 编写驱动程序:在STM32F407的固件库(或者CubeMX生成的初始化代码)中,找到串口相关函数,如初始化、发送和接收等函数,使用这些函数来实现与ESP8266模块之间的通信。调用初始化函数来配置串口,通过发送函数将指令发送给ESP8266模块,通过接收函数接收来自ESP8266模块的响应。 4. 设置ESP8266模块:使用AT指令集来设置和控制ESP8266模块。通过串口向ESP8266发送AT指令,并通过串口从ESP8266接收响应。根据需要,可以发送指令来配置无线网络参数、连接到无线网络、发送或接收数据等。 5. 调试和测试:在代码编写完成后,将STM32F407ESP8266模块连接到计算机上,运行程序并检查输出结果。根据需要进行调试和修改代码,确保与ESP8266模块的通信正常。 总之,STM32F407驱动ESP8266主要包括串口配置、使用固件库函数实现与ESP8266的通信和使用AT指令设置和控制ESP8266模块。通过合适的硬件连接和正确的代码编写,可以实现STM32F407ESP8266模块之间的稳定通信。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值