esp8266 当路由和服务器控制
#include <stdio.h>
#include <string.h>
char buffer[SIZE];
char LYMO[] = "AT+CWMODE=2\r\n";
char DLJ[] = "AT+CIPMUX=1\r\n";
char JLFW[] = "AT+CIPSERVER=1\r\n";
char FSSJ[] = "AT+CIPSEND=0,5\r\n";
char AT_OK_Flag = 0;
char AT_Connect_Net_Flag = 0;
char Client_Connect_Flag = 0;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART1)
{
if((UART1_RX_STA & 0x8000) == 0)
{
if(UART1_RX_STA & 0x4000)
{
if(buf == 0x0a)
{
UART1_RX_STA |= 0x8000;
if(!strcmp(UART1_RX_Buffer, "WIFI GOT IP")){
HAL_UART_Transmit(&huart2, "WIFI GOT IP\r\n", strlen("WIFI GOT IP\r\n"), 100);
AT_Connect_Net_Flag = 1;
}
if(!strcmp(UART1_RX_Buffer, "OK")){
HAL_UART_Transmit(&huart2, "OK\r\n", strlen("OK\r\n"), 100);
AT_OK_Flag = 1;
}
if(!strcmp(UART1_RX_Buffer, "0,CONNECT")){
Client_Connect_Flag = 1;
}
if(!strcmp(UART1_RX_Buffer, "L-1")){
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);
}
if(!strcmp(UART1_RX_Buffer, "L-0")){
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);
}
memset(UART1_RX_Buffer, 0, UART1_REC_LEN);
UART1_RX_STA = 0;
}
else
UART1_RX_STA = 0;
}
else
{
if(buf == 0x0d)
{
UART1_RX_STA |= 0x4000;
}
else
{
UART1_RX_Buffer[UART1_RX_STA & 0X3FFF] = buf;
UART1_RX_STA++;
if(UART1_RX_STA > UART1_REC_LEN - 1)
UART1_RX_STA = 0;
}
}
}
HAL_UART_Receive_IT(&huart1, &buf, 1);
}
}
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
HAL_NVIC_SetPriority(SysTick_IRQn,0,0);
HAL_UART_Receive_IT(&huart1, &buf, 1);
HAL_UART_Transmit(&huart2, "let's go\r\n", strlen("let's go\r\n"), 100);
printf(LYMO);
while(!AT_OK_Flag) HAL_Delay(50);
AT_OK_Flag = 0;
printf(DLJ);
while(!AT_OK_Flag) HAL_Delay(50);
AT_OK_Flag = 0;
printf(JLFW);
while(!Client_Connect_Flag) HAL_Delay(50);
AT_OK_Flag = 0;
if(Client_Connect_Flag){
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET);
}
while (1)
{
printf(FSSJ);
HAL_Delay(2000);
printf("Hello");
HAL_Delay(2000);
}
}