haohao663 发表于 2016-7-7 08:58:50

【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****/



stary666 发表于 2016-7-24 10:29:51

:loveliness::loveliness:

zhangxu56726 发表于 2017-7-15 15:05:51

你好! 网盘的资料能分享下吗?网盘过期了,谢谢!

haohao663 发表于 2017-7-16 12:12:01

链接:https://pan.baidu.com/s/1slN8rIt 密码:u6m1

lijain 发表于 2017-9-11 09:22:38

楼主你好,我最近也在做esp8266数据传输。做了一个stm32控制的tcp server可以传递数据,但是传递时间有点慢。可以和你讨论一下吗?我的qq是1632401541

jeffhe1 发表于 2018-9-29 00:20:38

感謝:loveliness:

sky1212 发表于 2019-4-15 20:27:26

你好! 网盘的资料能分享下吗?网盘过期了,谢谢:o

sky1212 发表于 2019-4-15 20:34:48

jeffhe1 发表于 2018-9-29 00:20
感謝

之前楼主网盘分享的能再分享出来吗?楼主的过期了,谢谢

jeffhe1 发表于 2019-4-16 08:38:36

sky1212 发表于 2019-4-15 20:34
之前楼主网盘分享的能再分享出来吗?楼主的过期了,谢谢

樓主分享的是硬石的 , 你可以到硬石論壇去下載 , 原本分享我已搞不清 , 因為我把他跟野火 弄在一起了 , 野火是標準庫

haohao663 发表于 2019-4-23 09:05:00

硬石开源资料下载链接(该帖总是最新资料)
http://www.ing10bbs.com/forum.php?mod=viewthread&tid=1458&fromuid=4
(出处: 硬石社区)
页: [1] 2
查看完整版本: 【HAL库每天一例】第063例:WIFI-ESP8266