你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【HAL库每天一例】第063例:WIFI-ESP8266

[复制链接]
haohao663 提问时间:2016-7-7 08:58 /
【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****/

CubeMX_1.jpg
CubeMX_2.jpg
CubeMX_3.jpg
CubeMX_4.jpg
CubeMX_5.jpg
CubeMX_6.jpg
CubeMX_7.jpg
CubeMX_8.jpg


bsp_esp8266.h文件内容
  1. #ifndef  __BSP_ESP8266_H__
  2. #define         __BSP_ESP8266_H__

  3. /* 包含头文件 ----------------------------------------------------------------*/
  4. #include "stm32f1xx_hal.h"
  5. #include <stdio.h>
  6. #include <stdbool.h>

  7. #if defined ( __CC_ARM   )
  8. #pragma anon_unions
  9. #endif
  10. /* 类型定义 ------------------------------------------------------------------*/
  11. /******************************* ESP8266 数据类型定义 ***************************/
  12. typedef enum{
  13.         STA,
  14.   AP,
  15.   STA_AP  
  16. } ENUM_Net_ModeTypeDef;

  17. typedef enum{
  18.          enumTCP,
  19.          enumUDP,
  20. } ENUM_NetPro_TypeDef;

  21. typedef enum{
  22.         Multiple_ID_0 = 0,
  23.         Multiple_ID_1 = 1,
  24.         Multiple_ID_2 = 2,
  25.         Multiple_ID_3 = 3,
  26.         Multiple_ID_4 = 4,
  27.         Single_ID_0 = 5,
  28. } ENUM_ID_NO_TypeDef;
  29.         
  30. typedef enum{
  31.         OPEN = 0,
  32.         WEP = 1,
  33.         WPA_PSK = 2,
  34.         WPA2_PSK = 3,
  35.         WPA_WPA2_PSK = 4,
  36. } ENUM_AP_PsdMode_TypeDef;

  37. #define RX_BUF_MAX_LEN     1024                                     //最大接收缓存字节数

  38. typedef struct                                    //串口数据帧的处理结构体
  39. {
  40.         char  Data_RX_BUF [ RX_BUF_MAX_LEN ];
  41.   union {
  42.     __IO uint16_t InfAll;
  43.     struct {
  44.                   __IO uint16_t FramLength       :15;                               // 14:0
  45.                   __IO uint16_t FramFinishFlag   :1;                                // 15
  46.           } InfBit;
  47.   };         
  48. }STRUCT_USARTx_Fram;

  49. /* 宏定义 --------------------------------------------------------------------*/

  50. /******************************** ESP8266 连接引脚定义 ***********************************/
  51. #define ESP8266_USARTx                                 USART2
  52. #define ESP8266_USARTx_BAUDRATE                        115200
  53. #define ESP8266_USART_RCC_CLK_ENABLE()                 __HAL_RCC_USART2_CLK_ENABLE()
  54. #define ESP8266_USART_RCC_CLK_DISABLE()                __HAL_RCC_USART2_CLK_DISABLE()

  55. #define ESP8266_USARTx_GPIO_ClK_ENABLE()               __HAL_RCC_GPIOA_CLK_ENABLE()
  56. #define ESP8266_USARTx_Port                            GPIOA
  57. #define ESP8266_USARTx_Tx_PIN                          GPIO_PIN_2
  58. #define ESP8266_USARTx_Rx_PIN                          GPIO_PIN_3

  59. #define ESP8266_USARTx_IRQHANDLER                      USART2_IRQHandler
  60. #define ESP8266_USARTx_IRQn                            USART2_IRQn

  61. #define ESP8266_RST_GPIO_ClK_ENABLE()                  __HAL_RCC_GPIOD_CLK_ENABLE()
  62. #define ESP8266_RST_PORT                               GPIOD
  63. #define ESP8266_RST_PIN                                GPIO_PIN_6
  64. #define ESP8266_RST_HIGH()                             HAL_GPIO_WritePin(ESP8266_RST_PORT,ESP8266_RST_PIN,GPIO_PIN_SET)
  65. #define ESP8266_RST_LOW()                              HAL_GPIO_WritePin(ESP8266_RST_PORT,ESP8266_RST_PIN,GPIO_PIN_RESET)
  66.             
  67. /*********************************************** ESP8266 函数宏定义 *******************************************/
  68. #define ESP8266_Usart( fmt, ... )                      USART_printf (ESP8266_USARTx, fmt, ##__VA_ARGS__ )
  69. #define PC_Usart( fmt, ... )                           printf ( fmt, ##__VA_ARGS__ )
  70. //#define PC_Usart( fmt, ... )               



  71. /* 扩展变量 ------------------------------------------------------------------*/
  72. extern UART_HandleTypeDef husartx_esp8266;
  73. extern STRUCT_USARTx_Fram strEsp8266_Fram_Record;
  74. extern uint8_t esp8266_rxdata;

  75. /* 函数声明 ------------------------------------------------------------------*/
  76. void  ESP8266_Init( void );
  77. void  ESP8266_stop( void );
  78. void  ESP8266_Rst( void );
  79. bool  ESP8266_Cmd( char * cmd, char * reply1, char * reply2, uint32_t waittime );
  80. bool  ESP8266_AT_Test( void );
  81. bool  ESP8266_Net_Mode_Choose( ENUM_Net_ModeTypeDef enumMode );
  82. bool  ESP8266_JoinAP( char * pSSID, char * pPassWord );
  83. bool  ESP8266_BuildAP( char * pSSID, char * pPassWord, ENUM_AP_PsdMode_TypeDef enunPsdMode );
  84. bool  ESP8266_Enable_MultipleId( FunctionalState enumEnUnvarnishTx );
  85. bool  ESP8266_Link_Server( ENUM_NetPro_TypeDef enumE, char * ip, char * ComNum, ENUM_ID_NO_TypeDef id);
  86. bool  ESP8266_StartOrShutServer( FunctionalState enumMode, char * pPortNum, char * pTimeOver );
  87. uint8_t ESP8266_Get_LinkStatus( void );
  88. uint8_t ESP8266_Get_IdLinkStatus( void );
  89. uint8_t ESP8266_Inquire_ApIp( char * pApIp, uint8_t ucArrayLength );
  90. bool ESP8266_UnvarnishSend( void );
  91. void ESP8266_ExitUnvarnishSend( void );
  92. bool ESP8266_SendString( FunctionalState enumEnUnvarnishTx, char * pStr, uint32_t ulStrLength, ENUM_ID_NO_TypeDef ucId );
  93. char * ESP8266_ReceiveString( FunctionalState enumEnUnvarnishTx );

  94. void  USART_printf(USART_TypeDef * USARTx, char * Data, ... );

  95. #endif

  96. /******************* (C) COPYRIGHT 2015-2020 硬石嵌入式开发团队 *****END OF FILE****/
复制代码

串口调试助手截图.jpg

收藏 3 评论12 发布时间:2016-7-7 08:58

举报

12个回答
stary666 回答时间:2016-7-24 10:29:51
zhangxu56726 回答时间:2017-7-15 15:05:51
你好! 网盘的资料能分享下吗?网盘过期了,谢谢!
haohao663 回答时间:2017-7-16 12:12:01
lijain 回答时间:2017-9-11 09:22:38
楼主你好,我最近也在做esp8266数据传输。做了一个stm32控制的tcp server可以传递数据,但是传递时间有点慢。可以和你讨论一下吗?我的qq是1632401541
jeffhe1 回答时间:2018-9-29 00:20:38
感謝
sky1212 回答时间:2019-4-15 20:27:26
你好! 网盘的资料能分享下吗?网盘过期了,谢谢
sky1212 回答时间:2019-4-15 20:34:48

之前楼主网盘分享的能再分享出来吗?楼主的过期了,谢谢
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.ph ... =1458&fromuid=4
(出处: 硬石社区)
Kevin_G 回答时间:2019-4-23 10:12:55
点赞
zxcv1ddd 回答时间:2019-4-23 23:39:34
谢谢分享
w014017 回答时间:2019-9-12 14:00:20
谢谢分享!!!

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版