找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3940|回复: 4
打印 上一主题 下一主题
收起左侧

esp8266收发一体stm32单片机测试程序

[复制链接]
跳转到指定楼层
楼主
ID:326809 发表于 2018-5-10 14:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
测试使用,收发一体程序,修改宏定义来确定收发状态

单片机源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   ******************************************************************************
  5.   * @attention
  6.   ******************************************************************************
  7.   */
  8. #include <string.h>
  9. #include <math.h>

  10. #include "stm32f10x.h"
  11. #include "bsp_usart1.h"
  12. #include "bsp_SysTick.h"
  13. #include "bsp_esp8266.h"
  14. #include "bsp_cpu_flash.h"
  15. #include "bsp_led.h"

  16. //发送数据长度
  17. #define TX_SIZE 36
  18. //RSSI存储地址
  19. #define RSSI_SAVE_ADDR  0X0800F000
  20. //统计次数存储地址
  21. #define FLASH_SAVE_ADDR  0X0800E000

  22. // 0:客户端模式 1:服务端模式
  23. static uint8_t s_ucTxRxMode = 0;


  24. #define      ESP8266_ApSsid                       "RMD_TEST"                //要连接的热点的名称
  25. #define      ESP8266_ApPwd                        "rmd_test"           //要连接的热点的密钥
  26. #define      ESP8266_enunPsdMode                   2           

  27. #define      ESP8266_TcpServer_IP                 "192.168.4.1"      //要连接的服务器的 IP
  28. #define      ESP8266_TcpServer_Port               "5000"               //要连接的服务器的端口

  29. #define N 40                //N = 10 * n ,其中n为环境衰减因子,3.25-4.5
  30. #define A 51            //接收机和发射机间隔1m时的信号强度

  31. extern volatile uint8_t ucTcpClosedFlag;
  32. extern uint8_t Get_AP_RSSI(char *APList, uint8_t uclenth);

  33. static char cStr[36] = "abcdefghijklmnopqrstuvwxyz1234567890";

  34. //计算距离
  35. float rssiTodis(int RSSI) {
  36.     float iu, distance;
  37.     iu = (float)(RSSI - A) / (float)N;  
  38.     distance = pow(10, iu);
  39.     return distance;
  40. }
  41. int main(){
  42.         USARTx_Config ();                                                         
  43.         SysTick_Init ();
  44.         printf("%f",rssiTodis(75));
  45. }
  46. /*
  47. int main ( void ){
  48.        
  49.         char RSSI[2];
  50.         u16 m = 0,n = 0;
  51.         char Mem_Buf[50];       
  52.         uint8_t ucStatus;
  53.         u32 Err_Num = 0,Success_Num = 0;

  54.   USARTx_Config ();                                                         
  55.         SysTick_Init ();
  56.         LED_GPIO_Config();
  57.         ESP8266_Init ();
  58.         Delay_ms(1000);
  59.         ESP8266_Cmd ( "AT+RESTORE", "OK", NULL, 500 );
  60.         Delay_ms(2000);
  61.         ESP8266_AT_Test ();
  62.         LED1_ON();
  63.         Delay_ms(1000);
  64.         LED1_OFF();
  65.        
  66.         if(s_ucTxRxMode == 0){
  67.                
  68.                 //设置为sta客户端
  69.                 ESP8266_Net_Mode_Choose(STA);
  70.                 //加入AP
  71.                 while ( ! ESP8266_JoinAP (ESP8266_ApSsid,ESP8266_ApPwd ) );       
  72.                 Delay_ms(500);
  73.                 //获取当前AP的RSSI值
  74.                 if(Get_AP_RSSI(RSSI,2)){
  75.                         //printf("%s",RSSI);
  76.                         sprintf(Mem_Buf,"!rssi:%s!",RSSI);
  77.                         bsp_WriteCpuFlash(RSSI_SAVE_ADDR,(uint8_t*)Mem_Buf,sizeof(Mem_Buf));
  78.                 }else{
  79.                         //printf("failed\r\n");
  80.                         sprintf(Mem_Buf,"!connect error!");
  81.                         bsp_WriteCpuFlash(RSSI_SAVE_ADDR,(uint8_t*)Mem_Buf,sizeof(Mem_Buf));
  82.                 }
  83.                 Delay_ms(500);
  84.                 //建立tcp连接
  85.                 ESP8266_Enable_MultipleId ( DISABLE );       
  86.                 while ( !        ESP8266_Link_Server ( enumTCP,ESP8266_TcpServer_IP,ESP8266_TcpServer_Port, Single_ID_0 ) );
  87.                 while ( ! ESP8266_UnvarnishSend ());
  88.                
  89.                 for(;;){
  90.                
  91.                         if(ESP8266_SendString ( ENABLE, cStr, 0, Single_ID_0 )){
  92.                                 n += 1;
  93.                                 printf("%s %d\r\n",cStr,n);
  94.                                 LED1_TOGGLE();
  95.                         }else{
  96.                                 Err_Num +=1;
  97.                         }
  98.                         ///以周期计数减小flash写入次数
  99.                         if(n == 10){
  100.                                 Success_Num += 1;
  101.                                 sprintf(Mem_Buf,"!success:%d,error:%d!",Success_Num,Err_Num);
  102.                                 //printf("%s\r\n",Mem_Buf);
  103.                                 bsp_WriteCpuFlash(FLASH_SAVE_ADDR,(uint8_t*)Mem_Buf,sizeof(Mem_Buf));
  104.                                 n = 0;                       
  105.                         }
  106.                                                
  107.                         Delay_ms(1000);
  108.                
  109.                         //检测是否失去连接
  110.                         if(ucTcpClosedFlag ){                                             
  111.                                 ESP8266_ExitUnvarnishSend ();                                    
  112.                        
  113.                                 do ucStatus = ESP8266_Get_LinkStatus ();                        
  114.                                 while (!ucStatus);
  115.                        
  116.                                 if(ucStatus == 4){
  117.                                
  118.                                         //printf ( "\r\n正在重连热点和服务器 ......\r\n" );                               
  119.                                         while ( ! ESP8266_JoinAP (ESP8266_ApSsid, ESP8266_ApPwd ) );                               
  120.                                         while ( !        ESP8266_Link_Server ( enumTCP, ESP8266_TcpServer_IP, ESP8266_TcpServer_Port, Single_ID_0 ) );                               
  121.                                         //printf ( "\r\n重连热点和服务器成功\r\n" );
  122.                                 }
  123.                                 while ( ! ESP8266_UnvarnishSend () );                                       
  124.                         }
  125.                 }               
  126.         }else if(s_ucTxRxMode == 1){
  127.                
  128.                 ESP8266_Net_Mode_Choose ( AP );               
  129.                 //printf ( "\r\n正在配置 ESP8266 ......\r\n" );
  130.                 while ( ! ESP8266_BuildAP ( ESP8266_ApSsid, ESP8266_ApPwd ,ESP8266_enunPsdMode));       
  131.                 ESP8266_Enable_MultipleId ( ENABLE );       
  132.                 while (!ESP8266_StartOrShutServer ( ENABLE, ESP8266_TcpServer_Port, "0"));

  133.                 for(;;){
  134.                         //检查接收到的内容是否存在丢包
  135.                         if(strcmp(ESP8266_ReceiveString(DISABLE),cStr)){
  136.                                 m += 1;
  137.                         //        printf("%s %d",ESP8266_ReceiveString(DISABLE),m);
  138.                                 LED1_TOGGLE();
  139.                         }else{
  140.                                 Err_Num += 1;
  141.                         }
  142.                         //周期计数并写入flash
  143.                         if(m == 120){
  144.                                 Success_Num += 1;
  145.                                 sprintf(Mem_Buf,"!success:%d,error:%d!",Success_Num,Err_Num);
  146.                         //        printf("%s\r\n",Mem_Buf);
  147.                                 bsp_WriteCpuFlash(FLASH_SAVE_ADDR,(uint8_t*)Mem_Buf,sizeof(Mem_Buf));
  148.                                 m = 0;
  149.                         }
  150.                 }
  151.         }
  152. }
  153. */

  154. /*********************************************END OF FILE**********************/
复制代码

所有资料51hei提供下载:
demo(esp8266).rar (307.88 KB, 下载次数: 64)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:308400 发表于 2018-5-16 17:53 | 只看该作者
楼主您好,为啥我参考使用这个程序作为客户端为啥调试助手接收不到程序,请问esp和单片机需要连接哪几根线
回复

使用道具 举报

板凳
ID:326809 发表于 2018-6-6 22:18 | 只看该作者
liuhansong 发表于 2018-5-16 17:53
楼主您好,为啥我参考使用这个程序作为客户端为啥调试助手接收不到程序,请问esp和单片机需要连接哪几根线

要连接的引脚程序里需要定义到,你可好好看一下。通用的8脚模块一样的效果。
回复

使用道具 举报

地板
ID:332109 发表于 2018-6-13 15:34 | 只看该作者
什么情况?分扣了文件没下载?
回复

使用道具 举报

5#
ID:246594 发表于 2019-3-18 09:20 | 只看该作者
好东西,最近刚好在学这一块的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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