Proteus仿真单片机STM32F103的TCP通信1
一单片机作为客户端调试软件做为服务端双向通信stm32实现socket tcp重连 - CSDN文库https://wenku.csdn.net/answer/da59b9d5c2fb4f798cfc56689807dce6十三、ESP8266的AT指令介绍和使用 - 稚终KINO - 博客园https://www.cnblogs.com/qingfeng515/p/17600041.htmlSTM32F103C8T6驱动ESP8266转串口模块一——模块AP模式TCP客户端的HAL库驱动代码详解CubeMX工程_cubemx esp8266-CSDN博客https://blog.csdn.net/Zhuwany/article/details/126093079一单片机作为客户端调试软件做为服务端双向通信ESP8266作为客户端配置步骤1AT2ATRST3ATCWMODE14ATCWJAP“SSID”,“密码”5ATCIPMUX06ATCIPSTART“TCP”,“IP”,端口号7ATCIPMODE18ATCIPSEND9发送数据退出透传模式发送(不加回车\r\n)#include “main.h”#include “usart.h”#include “gpio.h”/* Private includes ----------------------------------------------------------//USER CODE BEGIN Includes */#include “string.h”#include “cJSON.h”#include “stdio.h”#ifdefGNUC#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)#else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)#endifPUTCHAR_PROTOTYPE{HAL_UART_Transmit(huart1 , (uint8_t *)ch, 1, 0xFFFF);return ch;}int fputc(int ch, FILE *f){HAL_UART_Transmit(huart1, (uint8_t *)ch, 1, 0xffff);return ch;}int fgetc(FILEf){uint8_t ch 0;HAL_UART_Receive(huart1, ch, 1, 0xffff);return ch;}uint8_t my_re_buf2;uint8_t my_re_buf[2000];uint16_t pt_w20;uint16_t pt0;uint8_t aRxBuffer; //接收中断缓冲char RST_Start[]“ATRST\r\n”;char MODE_Start[]“ATCWMODE1\r\n”;char WIFI_Start[]“ATCWJAP“Tenda_800378”,“2111114”\r\n”;char Connected_Start[]“ATCIPMUX0\r\n”;char TCP_Start[]“ATCIPSTART“TCP”,“192.168.0.104”,8899\r\n”;//与服务端的IP一致char TX_Start[]“ATCIPMODE1\r\n”;char Data[]“ATCIPSEND\r\n”;char TX_Data[]“GET https://api.seniverse.com/v3/weather/now.json?keySG_ckZ26xPfp8E2EKlocationchengdulanguagezh-Hansunitc\r\n”;char Recive[5];char Recive2[5];/USER CODE END Includes *//* Private typedef -----------------------------------------------------------//USER CODE BEGIN PTD *//* USER CODE END PTD *//* Private define ------------------------------------------------------------//USER CODE BEGIN PD *//* USER CODE END PD *//* Private macro -------------------------------------------------------------//USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV *//* USER CODE END PV *//* Private function prototypes -----------------------------------------------/void SystemClock_Config(void);/USER CODE BEGIN PFP/void command(char Command_AT[]){int Lenthstrlen(Command_AT);HAL_UART_Transmit(huart2,(uint8_t)Command_AT,Lenth,0xff);//while(strstr(my_re_buf,“OK”)NULL){HAL_UART_Transmit(huart2,(uint8_t*)Command_AT,Lenth,0xff);HAL_Delay(2);}printf(“%s”,Command_AT);printf(“%s\n”,my_re_buf);HAL_Delay(3500);}void ESP8266_Init(void){command(MODE_Start);command(RST_Start);command(WIFI_Start);command(Connected_Start);command(TCP_Start);command(TX_Start);//command(Data);}/* USER CODE END PFP *//* Private user code ---------------------------------------------------------//USER CODE BEGIN 0 *//* USER CODE END 0 *//**brief The application entry point.retval int*/int main(void){/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals/MX_GPIO_Init();MX_USART1_UART_Init();MX_USART2_UART_Init();/USER CODE BEGIN 2 */ESP8266_Init();HAL_UART_Receive_IT(huart2, (uint8_t *)aRxBuffer, 1);/* USER CODE END 2 *//* Infinite loop//USER CODE BEGIN WHILE/while (1){printf(“data:%s\n”,my_re_buf);HAL_Delay(1000);/USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */}/**brief System Clock Configurationretval None*/void SystemClock_Config(void){RCC_OscInitTypeDef RCC_OscInitStruct {0};RCC_ClkInitTypeDef RCC_ClkInitStruct {0};/** Initializes the RCC Oscillators according to the specified parametersin the RCC_OscInitTypeDef structure.*/RCC_OscInitStruct.OscillatorType RCC_OSCILLATORTYPE_HSE;RCC_OscInitStruct.HSEState RCC_HSE_ON;RCC_OscInitStruct.HSEPredivValue RCC_HSE_PREDIV_DIV1;RCC_OscInitStruct.HSIState RCC_HSI_ON;RCC_OscInitStruct.PLL.PLLState RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLMUL RCC_PLL_MUL9;if (HAL_RCC_OscConfig(RCC_OscInitStruct) ! HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB buses clocks*/RCC_ClkInitStruct.ClockType RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider RCC_HCLK_DIV2;RCC_ClkInitStruct.APB2CLKDivider RCC_HCLK_DIV1;if (HAL_RCC_ClockConfig(RCC_ClkInitStruct, FLASH_LATENCY_2) ! HAL_OK){Error_Handler();}}/* USER CODE BEGIN 4 */void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){UNUSED(huart); if(huarthuart2) { my_re_buf2 aRxBuffer; my_re_buf[pt]aRxBuffer;// HAL_UART_Transmit(huart1, (uint8_t *)my_re_buf2, 1,0xff);// while(HAL_UART_GetState(huart1) HAL_UART_STATE_BUSY_TX);//检测UART发送结束HAL_UART_Receive_IT(huart2, (uint8_t *)aRxBuffer, 1); }}/* USER CODE END 4 */