找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4172|回复: 6
收起左侧

stm32控制WiFi模块的程序有吗? 求分享

[复制链接]
ID:459919 发表于 2019-1-22 17:48 | 显示全部楼层 |阅读模式
我刚买了一块板子,不清楚怎么stm32怎么控制WiFi模块的

回复

使用道具 举报

ID:208313 发表于 2019-3-12 21:17 | 显示全部楼层
后面自己看看吧,我要下班了,所以撤了,如果不懂的,可以说一下,如果有不对的,也说一下,我就昨天正好看关于WIFI的代码啊啊,学习AT指令玩玩,如果理解不对,技术水平低,也请见谅。充实自己,加油,如果我的CSDN资料开放的话,也可以看到相关解说,还没写完,估计暂不开放

  1. void ESP8266_StaTcpClient_UnvarnishTest ( void )//客服端,采用TCP协议通信
  2. {
  3.         uint8_t ucId, ucLen;//定义ID号,数据长度
  4.         uint8_t ucLed1Status = 0, ucLed2Status = 0, ucLed3Status = 0, ucBuzzerStatus = 0;//控制模块初始化,例如LED1,LED2.。。。

  5.         char cStr [ 100 ] = { 0 }, cCh;//定义数组以及变量,方便后面使用

  6.   char * pCh, * pCh1;//定义指针

  7.         DHT11_Data_TypeDef DHT11_Data;//DHT11温湿度传感器数据
  8.         

  9.   printf ( "\r\n正在配置 ESP8266 ......\r\n" );//打印正在配置WIFI信息(正常应该是串口显示)

  10.         macESP8266_CH_ENABLE();//wifi 模块使能,应该使其工作,代码不全,我估计实际就是是CH_PD相应引脚置高
  11.         
  12.         ESP8266_AT_Test ();//AT指令测试,正常是发送AT+空格,返回OK
  13.         
  14.         ESP8266_Net_Mode_Choose ( AP );//选择工作模式(AP模式)这个模式相当于WIFI热点

  15.   while ( ! ESP8266_CIPAP ( macUser_ESP8266_TcpServer_IP ) );//检测服务器IP(具体的能看一下代码好说)

  16.   while ( ! ESP8266_BuildAP ( macUser_ESP8266_BulitApSsid, macUser_ESP8266_BulitApPwd, macUser_ESP8266_BulitApEcn ) ); //建立AP 并设置相关信息      
  17.         
  18.         ESP8266_Enable_MultipleId ( ENABLE );//允许多路通信
  19.         
  20.         while ( !        ESP8266_StartOrShutServer ( ENABLE, macUser_ESP8266_TcpServer_Port, macUser_ESP8266_TcpServer_OverTime ) );

  21.         ESP8266_Inquire_ApIp ( cStr, 20 );
  22.         printf ( "\r\n本模块WIFI为%s,密码开放\r\nAP IP 为:%s,开启的端口为:%s\r\n手机网络助手连接该 IP 和端口,最多可连接5个客户端\r\n",
  23.            macUser_ESP8266_BulitApSsid, cStr, macUser_ESP8266_TcpServer_Port );//设定5个原因也好玩,自己看代码
  24.         
  25.         
  26.         strEsp8266_Fram_Record .InfBit .FramLength = 0;//接收数据位初始化
  27.         strEsp8266_Fram_Record .InfBit .FramFinishFlag = 0;   //最后一位检测为初始化     
  28.         
  29.         while ( 1 )
  30.         {               
  31.                 if ( strEsp8266_Fram_Record .InfBit .FramFinishFlag )//标志位位1
  32.                 {
  33.                         USART_ITConfig ( macESP8266_USARTx, USART_IT_RXNE, DISABLE ); //禁用串口接收中断
  34.                         strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ]  = '\0';//增加空格符
  35.                         
  36. //                        printf ( "\r\n%s\r\n", strEsp8266_Fram_Record .Data_RX_BUF );//
  37.                         if ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_LED_" ) ) != 0 ) //strstr字符串比较函数,存在后者字符返回1
  38.                         {
  39.                                 cCh = * ( pCh + 8 );//为啥要加8呢?实际上是因为CMD_LED_占8个字符,要用的数据在它后一位,起始位为0,所以加8后指针调用就是它要的数据
  40.                                 
  41.                                 switch ( cCh )
  42.                                 {
  43.                                         case '1':
  44.                                                 cCh = * ( pCh + 10 );//同理,
  45.                                           switch ( cCh )
  46.                                           {
  47.                                                         case '0':
  48.                                                                 macLED1_OFF ();
  49.                                                           ucLed1Status = 0;
  50.                                                     break;
  51.                                                         case '1':
  52.                                                                 macLED1_ON ();
  53.                                                           ucLed1Status = 1;
  54.                                                     break;
  55.                                                         default :
  56.                                                                 break;
  57.                                                 }
  58.                                                 break;
  59.                                                 
  60.                                         case '2':
  61.                                                 cCh = * ( pCh + 10 );
  62.                                           switch ( cCh )
  63.                                           {
  64.                                                         case '0':
  65.                                                                 macLED2_OFF ();
  66.                                                           ucLed2Status = 0;
  67.                                                     break;
  68.                                                         case '1':
  69.                                                                 macLED2_ON ();
  70.                                                           ucLed2Status = 1;
  71.                                                     break;
  72.                                                         default :
  73.                                                                 break;
  74.                                                 }
  75.                                                 break;

  76.                                         case '3':
  77.                                                 cCh = * ( pCh + 10 );
  78.                                           switch ( cCh )
  79.                                           {
  80.                                                         case '0':
  81.                                                                 macLED3_OFF ();
  82.                                                           ucLed3Status = 0;
  83.                                                     break;
  84.                                                         case '1':
  85.                                                                 macLED3_ON ();
  86.                                                           ucLed3Status = 1;
  87.                                                     break;
  88.                                                         default :
  89.                                                                 break;
  90.                                                 }
  91.                                                 break;
  92.                                                 
  93.                                   default :
  94.             break;                                       
  95.                                                 
  96.                                 }
  97.                                 
  98.                                 sprintf ( cStr, "CMD_LED_%d_%d_%d_ENDLED_END", ucLed1Status, ucLed2Status, ucLed3Status );
  99.                                 
  100.                         }
  101.                         
  102.                         else if ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_BUZZER_" ) ) != 0 )
  103.                         {
  104.                                 cCh = * ( pCh + 11 );
  105.                                 
  106.                                 switch ( cCh )
  107.                                 {
  108.                                         case '0':
  109.                                                 macBEEP_OFF ();
  110.                                           ucBuzzerStatus = 0;
  111.                                                 break;
  112.                                         case '1':
  113.                                                 macBEEP_ON ();
  114.                                           ucBuzzerStatus = 1;
  115.                                                 break;
  116.                                         default:
  117.                                                 break;
  118.                                 }
  119.                                 
  120.                                 sprintf ( cStr, "CMD_BUZZER_%d_ENDBUZZER_END", ucBuzzerStatus );
  121.                                 
  122.                         }
  123.                                 
  124.                         else if ( ( ( pCh  = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_UART_" ) ) != 0 ) &&
  125.                                         ( ( pCh1 = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "_ENDUART_END" ) )  != 0 ) )
  126.                         {
  127.                                 if ( pCh < pCh1)
  128.                                 {
  129.                                         ucLen = pCh1 - pCh + 12;
  130.                                         memcpy ( cStr, pCh, ucLen );
  131.                                         cStr [ ucLen ] = '\0';
  132.                                 }
  133.                         }

  134.                         else if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_READ_ALL_END" ) != 0 )
  135.                         {
  136.                                 DHT11_Read_TempAndHumidity ( & DHT11_Data );
  137.                                 sprintf ( cStr, "CMD_LED_%d_%d_%d_ENDLED_DHT11_%d.%d_%d.%d_ENDDHT11_BUZZER_%d_ENDBUZZER_END",
  138.                                                                         ucLed1Status, ucLed2Status, ucLed3Status, DHT11_Data .temp_int,
  139.                                     DHT11_Data .temp_deci, DHT11_Data .humi_int, DHT11_Data .humi_deci,
  140.                   ucBuzzerStatus );
  141.                         }
  142.                         
  143.                                 
  144.                         if ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "+IPD," ) ) != 0 )
  145.                         {
  146.                                 ucId = * ( pCh + strlen ( "+IPD," ) ) - '0';
  147.                                 ESP8266_SendString ( DISABLE, cStr, strlen ( cStr ), ( ENUM_ID_NO_TypeDef ) ucId );
  148.                         }
  149.                         
  150.                   strEsp8266_Fram_Record .InfBit .FramLength = 0;
  151.             strEsp8266_Fram_Record .InfBit .FramFinishFlag = 0;        
  152.                         
  153.                         USART_ITConfig ( macESP8266_USARTx, USART_IT_RXNE, ENABLE ); //使能串口接收中断
  154.                         
  155.                 }
  156.                
  157.         }
  158.         
  159.                
  160. }
复制代码

回复

使用道具 举报

ID:459919 发表于 2019-1-23 09:20 | 显示全部楼层
void ESP8266_StaTcpClient_UnvarnishTest ( void )
{
        uint8_t ucId, ucLen;
        uint8_t ucLed1Status = 0, ucLed2Status = 0, ucLed3Status = 0, ucBuzzerStatus = 0;

        char cStr [ 100 ] = { 0 }, cCh;

  char * pCh, * pCh1;

        DHT11_Data_TypeDef DHT11_Data;
       

  printf ( "\r\n正在配置 ESP8266 ......\r\n" );

        macESP8266_CH_ENABLE();
       
        ESP8266_AT_Test ();
       
        ESP8266_Net_Mode_Choose ( AP );

  while ( ! ESP8266_CIPAP ( macUser_ESP8266_TcpServer_IP ) );

  while ( ! ESP8266_BuildAP ( macUser_ESP8266_BulitApSsid, macUser_ESP8266_BulitApPwd, macUser_ESP8266_BulitApEcn ) );       
       
        ESP8266_Enable_MultipleId ( ENABLE );
       
        while ( !        ESP8266_StartOrShutServer ( ENABLE, macUser_ESP8266_TcpServer_Port, macUser_ESP8266_TcpServer_OverTime ) );

        ESP8266_Inquire_ApIp ( cStr, 20 );
        printf ( "\r\n本模块WIFI为%s,密码开放\r\nAP IP 为:%s,开启的端口为:%s\r\n手机网络助手连接该 IP 和端口,最多可连接5个客户端\r\n",
           macUser_ESP8266_BulitApSsid, cStr, macUser_ESP8266_TcpServer_Port );
       
       
        strEsp8266_Fram_Record .InfBit .FramLength = 0;
        strEsp8266_Fram_Record .InfBit .FramFinishFlag = 0;       
       
        while ( 1 )
        {               
                if ( strEsp8266_Fram_Record .InfBit .FramFinishFlag )
                {
                        USART_ITConfig ( macESP8266_USARTx, USART_IT_RXNE, DISABLE ); //禁用串口接收中断
                        strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ]  = '\0';
                       
//                        printf ( "\r\n%s\r\n", strEsp8266_Fram_Record .Data_RX_BUF );//
                        if ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_LED_" ) ) != 0 )
                        {
                                cCh = * ( pCh + 8 );
                               
                                switch ( cCh )
                                {
                                        case '1':
                                                cCh = * ( pCh + 10 );
                                          switch ( cCh )
                                          {
                                                        case '0':
                                                                macLED1_OFF ();
                                                          ucLed1Status = 0;
                                                    break;
                                                        case '1':
                                                                macLED1_ON ();
                                                          ucLed1Status = 1;
                                                    break;
                                                        default :
                                                                break;
                                                }
                                                break;
                                               
                                        case '2':
                                                cCh = * ( pCh + 10 );
                                          switch ( cCh )
                                          {
                                                        case '0':
                                                                macLED2_OFF ();
                                                          ucLed2Status = 0;
                                                    break;
                                                        case '1':
                                                                macLED2_ON ();
                                                          ucLed2Status = 1;
                                                    break;
                                                        default :
                                                                break;
                                                }
                                                break;

                                        case '3':
                                                cCh = * ( pCh + 10 );
                                          switch ( cCh )
                                          {
                                                        case '0':
                                                                macLED3_OFF ();
                                                          ucLed3Status = 0;
                                                    break;
                                                        case '1':
                                                                macLED3_ON ();
                                                          ucLed3Status = 1;
                                                    break;
                                                        default :
                                                                break;
                                                }
                                                break;
                                               
                                  default :
            break;                                       
                                               
                                }
                               
                                sprintf ( cStr, "CMD_LED_%d_%d_%d_ENDLED_END", ucLed1Status, ucLed2Status, ucLed3Status );
                               
                        }
                       
                        else if ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_BUZZER_" ) ) != 0 )
                        {
                                cCh = * ( pCh + 11 );
                               
                                switch ( cCh )
                                {
                                        case '0':
                                                macBEEP_OFF ();
                                          ucBuzzerStatus = 0;
                                                break;
                                        case '1':
                                                macBEEP_ON ();
                                          ucBuzzerStatus = 1;
                                                break;
                                        default:
                                                break;
                                }
                               
                                sprintf ( cStr, "CMD_BUZZER_%d_ENDBUZZER_END", ucBuzzerStatus );
                               
                        }
                               
                        else if ( ( ( pCh  = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_UART_" ) ) != 0 ) &&
                                        ( ( pCh1 = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "_ENDUART_END" ) )  != 0 ) )
                        {
                                if ( pCh < pCh1)
                                {
                                        ucLen = pCh1 - pCh + 12;
                                        memcpy ( cStr, pCh, ucLen );
                                        cStr [ ucLen ] = '\0';
                                }
                        }

                        else if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_READ_ALL_END" ) != 0 )
                        {
                                DHT11_Read_TempAndHumidity ( & DHT11_Data );
                                sprintf ( cStr, "CMD_LED_%d_%d_%d_ENDLED_DHT11_%d.%d_%d.%d_ENDDHT11_BUZZER_%d_ENDBUZZER_END",
                                                                        ucLed1Status, ucLed2Status, ucLed3Status, DHT11_Data .temp_int,
                                    DHT11_Data .temp_deci, DHT11_Data .humi_int, DHT11_Data .humi_deci,
                  ucBuzzerStatus );
                        }
                       
                               
                        if ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "+IPD," ) ) != 0 )
                        {
                                ucId = * ( pCh + strlen ( "+IPD," ) ) - '0';
                                ESP8266_SendString ( DISABLE, cStr, strlen ( cStr ), ( ENUM_ID_NO_TypeDef ) ucId );
                        }
                       
                  strEsp8266_Fram_Record .InfBit .FramLength = 0;
            strEsp8266_Fram_Record .InfBit .FramFinishFlag = 0;       
                       
                        USART_ITConfig ( macESP8266_USARTx, USART_IT_RXNE, ENABLE ); //使能串口接收中断
                       
                }
               
        }
       
               
}


这个程序主要说的是什么意思呀
回复

使用道具 举报

ID:365274 发表于 2019-1-24 23:35 | 显示全部楼层
这个要看你使用的是哪一个wifi模块
回复

使用道具 举报

ID:459919 发表于 2019-1-30 14:34 | 显示全部楼层
shihun 发表于 2019-1-24 23:35
这个要看你使用的是哪一个wifi模块

esp8266这个WiFi模块
回复

使用道具 举报

ID:474137 发表于 2019-1-30 14:54 | 显示全部楼层
仔细阅读一下wifi模块的手册~
回复

使用道具 举报

ID:490347 发表于 2019-3-13 22:32 | 显示全部楼层
看下这个

ESP8266新手入门调试指导(补全).doc

621.12 KB, 下载次数: 82

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表