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

[复制链接]
 楼主| 亼亽 发表于 2016-7-7 08:46 | 显示全部楼层 |阅读模式
【HAL库每天一例】系列例程从今天开始持续更新。。。。。
我们将**每天至少发布一个基于YS-F1Pro开发板的HAL库例程,
该系列例程将带领大家从零开始使用HAL库,后面会持续添加模块应用例程。
同样的,我们还程序发布基于HAL库的指导文档和视频教程,欢迎持续关注,并提出改进意见。
例程下载:
资料包括程序、相关说明资料以及软件使用截图
链接:http://pan.baidu.com/s/1i574oPv
密码:r3s3

(硬石YS-F1Pro开发板HAL库例程持续更新\1. 软件设计之基本裸机例程(HAL库版本)\YSF1-064. WIFI-ESP8266

/**
  ******************************************************************************
  *                           硬石YS-F1Pro开发板例程功能说明
  *
  *  例程名称: 1. WiFi(ESP8266)透传
  *   
  ******************************************************************************
  * 说明:
  * 本例程配套硬石stm32开发板YS-F1Pro使用。
  *
  * 淘宝:
  * 论坛:http://www.ing10bbs.com
  * 版权归硬石嵌入式开发团队所有,请勿商用。
  ******************************************************************************
  */

【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


Roderman_z 发表于 2016-7-7 15:41 | 显示全部楼层
程序都是如何应用的啊,有没有硬件的描述
 楼主| 亼亽 发表于 2016-7-7 17:59 | 显示全部楼层
Roderman_z 发表于 2016-7-7 15:41
程序都是如何应用的啊,有没有硬件的描述

STM32F1入门福利:基于HAL库(CubeMX)的软硬件设计手册(持续更新)
https://bbs.21ic.com/forum.php?mo ... amp;fromuid=1735642
(出处: 21ic电子技术论坛)
mmuuss586 发表于 2016-7-7 19:46 | 显示全部楼层
谢谢分享;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

122

主题

216

帖子

48

粉丝
快速回复 在线客服 返回列表 返回顶部