【HAL库每天一例】第063例:WIFI-ESP8266
【HAL库每天一例】系列例程从今天开始持续更新。。。。。我们将坚持每天至少发布一个基于YS-F1Pro开发板的HAL库例程,
该系列例程将带领大家从零开始使用HAL库,后面会持续添加模块应用例程。
同样的,我们还程序发布基于HAL库的指导文档和视频教程,欢迎持续关注,并提出改进意见。
例程下载:
资料包括程序、相关说明资料以及软件使用截图
链接:https://pan.baidu.com/s/1i574oPv
密码:r3s3
(硬石YS-F1Pro开发板HAL库例程持续更新\1. 软件设计之基本裸机例程(HAL库版本)\YSF1-064. WIFI-ESP8266)
/**
******************************************************************************
* 硬石YS-F1Pro开发板例程功能说明
*
*例程名称: 1. WiFi(ESP8266)透传
*
******************************************************************************
* 说明:
* 本例程配套硬石stm32开发板YS-F1Pro使用。
*
* 淘宝:
* 论坛:硬石电子社区
* 版权归硬石嵌入式开发团队所有,请勿商用。
******************************************************************************
*/
【1】例程简介
RS232是一个国际通用标准的串行数据通信接口,用于两个设备直接数据交换。本例程使用USART
外设功能,实现stm32向PC端发送数据,并等待接收来着PC端的信息中断,然后再回传信息给PC端。
YS_F1Pro开发板上集成一个ESP8266 WiFi模块,只需要通过USART即可与之通信,开发板设计
通过跳线帽即可选择USART2与之连接。
【2】跳线帽情况
******* 为保证例程正常运行,必须插入以下跳线帽 **********
丝印编号 IO端口 目标功能引脚 出厂默认设置
JP1 PA10 TXD(CH340G) 已接入
JP2 PA9 RXD(CH340G) 已接入
CN10 PA2 RXD(WIFI) 已接入
CN10 PA3 TXD(WIFI) 已接入
【3】操作及现象
保证JP1、JP2和CN10端子上的4个跳线帽插入正确。打开网络调试助手,设置为“TCP Server”
类型,服务器IP为自己主机IP,端口设置为8080,并启动服务,然后修过本例程中main.c文件中有关
WiFi账号、密码,以及要连接的服务器IP(自己电脑IP)和端口(8000),编译程序。然后使用开发板
配套的MINI USB线连接到开发板标示“调试串口”字样的MIMI USB接口,在电脑端打开串口调试助手
工具,选择对应端口,设置参数为115200 8-NO-1,下载程序之后,在串口调试助手窗口可接收到信息。
等待ESP8266正确连接上网络后在网络调试助手接口接收到数据。
/******************* (C) COPYRIGHT 2015-2020 硬石嵌入式开发团队 *****END OF FILE****/
bsp_esp8266.h文件内容
#ifndef__BSP_ESP8266_H__
#define __BSP_ESP8266_H__
/* 包含头文件 ----------------------------------------------------------------*/
#include "stm32f1xx_hal.h"
#include <stdio.h>
#include <stdbool.h>
#if defined ( __CC_ARM )
#pragma anon_unions
#endif
/* 类型定义 ------------------------------------------------------------------*/
/******************************* ESP8266 数据类型定义 ***************************/
typedef enum{
STA,
AP,
STA_AP
} ENUM_Net_ModeTypeDef;
typedef enum{
enumTCP,
enumUDP,
} ENUM_NetPro_TypeDef;
typedef enum{
Multiple_ID_0 = 0,
Multiple_ID_1 = 1,
Multiple_ID_2 = 2,
Multiple_ID_3 = 3,
Multiple_ID_4 = 4,
Single_ID_0 = 5,
} ENUM_ID_NO_TypeDef;
typedef enum{
OPEN = 0,
WEP = 1,
WPA_PSK = 2,
WPA2_PSK = 3,
WPA_WPA2_PSK = 4,
} ENUM_AP_PsdMode_TypeDef;
#define RX_BUF_MAX_LEN 1024 //最大接收缓存字节数
typedef struct //串口数据帧的处理结构体
{
charData_RX_BUF [ RX_BUF_MAX_LEN ];
union {
__IO uint16_t InfAll;
struct {
__IO uint16_t FramLength :15; // 14:0
__IO uint16_t FramFinishFlag :1; // 15
} InfBit;
};
}STRUCT_USARTx_Fram;
/* 宏定义 --------------------------------------------------------------------*/
/******************************** ESP8266 连接引脚定义 ***********************************/
#define ESP8266_USARTx USART2
#define ESP8266_USARTx_BAUDRATE 115200
#define ESP8266_USART_RCC_CLK_ENABLE() __HAL_RCC_USART2_CLK_ENABLE()
#define ESP8266_USART_RCC_CLK_DISABLE() __HAL_RCC_USART2_CLK_DISABLE()
#define ESP8266_USARTx_GPIO_ClK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
#define ESP8266_USARTx_Port GPIOA
#define ESP8266_USARTx_Tx_PIN GPIO_PIN_2
#define ESP8266_USARTx_Rx_PIN GPIO_PIN_3
#define ESP8266_USARTx_IRQHANDLER USART2_IRQHandler
#define ESP8266_USARTx_IRQn USART2_IRQn
#define ESP8266_RST_GPIO_ClK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
#define ESP8266_RST_PORT GPIOD
#define ESP8266_RST_PIN GPIO_PIN_6
#define ESP8266_RST_HIGH() HAL_GPIO_WritePin(ESP8266_RST_PORT,ESP8266_RST_PIN,GPIO_PIN_SET)
#define ESP8266_RST_LOW() HAL_GPIO_WritePin(ESP8266_RST_PORT,ESP8266_RST_PIN,GPIO_PIN_RESET)
/*********************************************** ESP8266 函数宏定义 *******************************************/
#define ESP8266_Usart( fmt, ... ) USART_printf (ESP8266_USARTx, fmt, ##__VA_ARGS__ )
#define PC_Usart( fmt, ... ) printf ( fmt, ##__VA_ARGS__ )
//#define PC_Usart( fmt, ... )
/* 扩展变量 ------------------------------------------------------------------*/
extern UART_HandleTypeDef husartx_esp8266;
extern STRUCT_USARTx_Fram strEsp8266_Fram_Record;
extern uint8_t esp8266_rxdata;
/* 函数声明 ------------------------------------------------------------------*/
voidESP8266_Init( void );
voidESP8266_stop( void );
voidESP8266_Rst( void );
boolESP8266_Cmd( char * cmd, char * reply1, char * reply2, uint32_t waittime );
boolESP8266_AT_Test( void );
boolESP8266_Net_Mode_Choose( ENUM_Net_ModeTypeDef enumMode );
boolESP8266_JoinAP( char * pSSID, char * pPassWord );
boolESP8266_BuildAP( char * pSSID, char * pPassWord, ENUM_AP_PsdMode_TypeDef enunPsdMode );
boolESP8266_Enable_MultipleId( FunctionalState enumEnUnvarnishTx );
boolESP8266_Link_Server( ENUM_NetPro_TypeDef enumE, char * ip, char * ComNum, ENUM_ID_NO_TypeDef id);
boolESP8266_StartOrShutServer( FunctionalState enumMode, char * pPortNum, char * pTimeOver );
uint8_t ESP8266_Get_LinkStatus( void );
uint8_t ESP8266_Get_IdLinkStatus( void );
uint8_t ESP8266_Inquire_ApIp( char * pApIp, uint8_t ucArrayLength );
bool ESP8266_UnvarnishSend( void );
void ESP8266_ExitUnvarnishSend( void );
bool ESP8266_SendString( FunctionalState enumEnUnvarnishTx, char * pStr, uint32_t ulStrLength, ENUM_ID_NO_TypeDef ucId );
char * ESP8266_ReceiveString( FunctionalState enumEnUnvarnishTx );
voidUSART_printf(USART_TypeDef * USARTx, char * Data, ... );
#endif
/******************* (C) COPYRIGHT 2015-2020 硬石嵌入式开发团队 *****END OF FILE****/
:loveliness::loveliness: 你好! 网盘的资料能分享下吗?网盘过期了,谢谢! 链接:https://pan.baidu.com/s/1slN8rIt 密码:u6m1 楼主你好,我最近也在做esp8266数据传输。做了一个stm32控制的tcp server可以传递数据,但是传递时间有点慢。可以和你讨论一下吗?我的qq是1632401541 感謝:loveliness: 你好! 网盘的资料能分享下吗?网盘过期了,谢谢:o jeffhe1 发表于 2018-9-29 00:20
感謝
之前楼主网盘分享的能再分享出来吗?楼主的过期了,谢谢
sky1212 发表于 2019-4-15 20:34
之前楼主网盘分享的能再分享出来吗?楼主的过期了,谢谢
樓主分享的是硬石的 , 你可以到硬石論壇去下載 , 原本分享我已搞不清 , 因為我把他跟野火 弄在一起了 , 野火是標準庫 硬石开源资料下载链接(该帖总是最新资料)
http://www.ing10bbs.com/forum.php?mod=viewthread&tid=1458&fromuid=4
(出处: 硬石社区)
页:
[1]
2