3168|1

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

ESP8266和msp430g2553的实践项目 [复制链接]

在调ESP8266的时候出了点问题,然而技术文档只写了很基本的东西。我们使用UDP广播的形式发送数据,但是指令集里面没有提到这个,导致查了很久的错才发现问题。

在使用UDP广播的时候,AT+CIPSTART=0,“UDP”,"255.255.255.255",1000,5000,1(PS:里面的5000是端口号,其他参数都是固定的)。同时,这个模块每次断电再上电就得设置下这两句话。AT+CIPMUX=1;AT+CIPSTART=0,“UDP”,"255.255.255.255",1000,5000,1。所以串口发送这两个字符串,发送的时候双引号使用转义字符\",而结尾记得发送\n\r,\n为回车,缓冲区的内容会发出来,\r为换行,这个是格式要求,跟配置蓝牙的AT指令要求一致。

下面是我做的一个项目的程序
#include "msp430g2553.h"  
#define CPU_F ((double)1000000)  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))   
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   
#define OUT_1 P2OUT|=BIT2;  
#define OUT_0 P2OUT&=~BIT2;  
#define red_time 40  
#define green_time 60  
#define cycle 100  
#define uchar unsigned char  
char str[13];  
int i=0;  
void timer_init();  
void uart0_init();  
void send_byte(uchar byte);  
void send_string(uchar *string);  
void ESP_init();  
void code_1();  
void code_0();  
void start();  
void end();  
void red_light();//红灯设置为7位数据加一位校验码(偶校验),00000000  
void green_light();//绿灯设置为7位数据加一位校验码(偶校验),00000011  
void normal();//正常的红绿灯,红灯40s,绿灯60s  
char flag=0;  
int mode=0;//设置电脑控制还是手动控制  
int time=0;  
int main( void )  
{  
  WDTCTL = WDTPW + WDTHOLD;  
  BCSCTL1=CALBC1_1MHZ;  
  DCOCTL=CALDCO_1MHZ;//dcoclk为1M  
  BCSCTL1|=SELM0;//MCLK选择XT1,SMCLK为dcoclk  
  P2DIR|=BIT1+BIT2;  
  P2SEL|=BIT1;//P2.1为38k输出  
  P1DIR|=BIT0+BIT6;//测试用  
  P1OUT&=~BIT0+(~BIT6);  
  uart0_init();//串口初始化  
  timer_init();//定时器初始化  
  ESP_init();  
  _EINT();  
   while(1)  
   {  
     if(mode==1) {red_light();P1OUT|=BIT6;}  
     else P1OUT&=~BIT6;  
     if(mode==2) {green_light();P1OUT|=BIT0;}  
     else P1OUT&=~BIT0;  
     if(mode==0) normal();  

   }  
}  
void timer_init()//TA1做38k方波产生,记一次数1us  
{  
TACTL=TASSEL_1+MC_1+ID_3;  
CCR0=50000-1;  
CCTL0=CCIE;//TA0  
TA1CTL|=TASSEL_2+MC_1+TACLR;  
TA1CCR0=26;  
TA1CCTL1=OUTMOD_6;  
TA1CCR1=13;//TA1.1  
}  
void uart0_init()  
{  
P1SEL = BIT1 + BIT2; //1.1为rxd,1.2为txd  
P1SEL2 = BIT1 + BIT2;  
UCA0CTL1 |= UCSSEL_2;   
UCA0BR0 = 8;  
UCA0BR1 = 0;  
UCA0MCTL = UCBRS2 + UCBRS0;   
UCA0CTL1 &= ~UCSWRST;   
IE2 |= UCA0RXIE;  
}  
void ESP_init()  
{  
send_string("AT\r\n");//\n为回车,遇到回车时将缓冲区内容发出,\r为换行,格式要求  
delay_ms(100);  
send_string("AT+CIPMUX=1\r\n");  
delay_ms(100);  
send_string("AT+CIPSTART=0,\"UDP\",\"255.255.255.255\",1000,5002,1\r\n");  
delay_ms(100);  
}  
void code_1()//260us低电平和260us高电平  
{  
  OUT_0;  
  delay_us(260);  
  OUT_1;  
  delay_us(260);  
}  
void code_0()//520us低电平和260us高电平  
{  
  OUT_0;  
  delay_us(520);  
  OUT_1;  
  delay_us(260);   
}  
void start()//520us高电平  
{  
  OUT_1;  
  delay_us(520);  
}  
void end()//260us低电平  
{  
  OUT_0;  
  delay_us(260);  
}  
void red_light()  
{   
  int i;  
  start();  
  for(i=0;i<8;i++)  
    code_0();  
  end();  
}  
void green_light()  
{   
  int i;  
  start();  
  for(i=0;i<6;i++)  
    code_0();  
  code_1();  
  code_1();  
  end();  
}  
void normal()  
{  
if(time

最新回复

我有 MSP430G2553 LunchPad, 請問一下 ESP8266 有 ESP01~ESP12, 要買哪一個版本呢?  謝謝 !  详情 回复 发表于 2018-9-12 09:01
 
点赞 关注(1)

回复
举报

99

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
我有 MSP430G2553 LunchPad, 請問一下 ESP8266 有 ESP01~ESP12, 要買哪一個版本呢?  謝謝 !
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表