include "usart.h"
#include "delay.h"
#include "esp8266.h"
#include "led.h"
#include "key.h"
#include "stdio.h"
#include "myoled.h"
#include "lcd.h"
u8 at_cwmode[] = {0x41, 0x54, 0x2B, 0x43, 0x57, 0x4D, 0x4F, 0x44, 0x45, 0x3D,
0x33, 0x0D, 0x0A};//AT+CWMODE=3(回车)
u8 at_rst[] = {0x41, 0x54, 0x2B, 0x52, 0x53, 0x54, 0x0D, 0x0A};//AT+RST(回车)
u8 at_cwsap[] = {0x41, 0x54, 0x2B, 0x43, 0x57, 0x53, 0x41, 0x50, 0x3D, 0x22,
0x45, 0x53, 0x50, 0x38, 0x32, 0x36, 0x36, 0x5F, 0x54, 0x45,
0x53, 0x54, 0x22, 0x2C, 0x22, 0x31, 0x32, 0x33, 0x34, 0x35,
0x36, 0x37, 0x38, 0x39, 0x30, 0x22, 0x2C, 0x31, 0x2C, 0x33,
0x0D, 0x0A};//AT+CWSAP="ESP8266_TEST","1234567890",1,3(回车)
u8 at_cipmux[] = {0x41, 0x54, 0x2B, 0x43, 0x49, 0x50, 0x4D, 0x55, 0x58,
0x3D, 0x31, 0x0D, 0x0A};//AT+CIPMUX=1(回车)
u8 at_sipserver[] = {0x41, 0x54, 0x2B, 0x43, 0x49, 0x50, 0x53, 0x45, 0x52, 0x56,
0x45, 0x52, 0x3D, 0x31, 0x2C, 0x38, 0x30, 0x38, 0x30, 0x0D,
0x0A};//AT+CIPSERVER=1,8080(回车)
int main(void)
{
u8 key;
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
uart_init(72,115200); //串口初始化为115200
uart3_init(72,115200);
int i = 0;
for(i = 0; i < 13; i++){
USART3->DR = at_cwmode[i];//送出AT+CWMODE=3(回车)
while((USART3->SR & 0x80) == 0);//直到发送成功
}
delay_ms(1000);
for(i = 0; i < 8; i++){
USART3->DR = at_rst[i];//送出AT+RST(回车)
while((USART3->SR & 0x80) == 0);//直到发送成功
}
delay_ms(2000);
for(i = 0; i < 42; i++){
USART3->DR = at_cwsap[i];//送出AT+CWSAP="ESP8266_TEST","1234567890",1,3(回车)
while((USART3->SR & 0x80) == 0);//直到发送成功
}
delay_ms(1000);
for(i = 0; i < 13; i++){
USART3->DR = at_cipmux[i];//送出AT+CIPMUX=1(回车)
while((USART3->SR & 0x80) == 0);//直到发送成功
}
delay_ms(1000);
for(i = 0; i < 21; i++){
USART3->DR = at_sipserver[i];//送出AT+CIPSERVER=1,8080(回车)
while((USART3->SR & 0x80) == 0);//直到发送成功
}
while(1)
{
}
}
void uart3_init(u32 pclk2,u32 bound)
{
float temp;
u16 mantissa;
u16 fraction;
temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV(分频值)
mantissa=temp; //得到整数部分
fraction=(temp-mantissa)*16; //得到小数部分
mantissa<<=4;
mantissa+=fraction;
RCC->APB2ENR|=1<<3; //使能PORTB口时钟
RCC->APB1ENR|=1<<18; //使能串口时钟
GPIOB->CRH&=0XFFFF00FF;//IO状态设置
GPIOB->CRH|=0X00008B00;//IO状态设置
RCC->APB1RSTR|=1<<18; //复位串口1
RCC->APB1RSTR&=~(1<<18);//停止复位
//波特率设置
USART3->BRR=mantissa; // 波特率设置
USART3->CR1|=0X200C; //1位停止,无校验位.
//使能接收中断
USART3->CR1|=1<<5; //接收缓冲区非空中断使能
MY_NVIC_Init(3,3,USART3_IRQn,2);//组2,最低优先级
}
|