完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
[i][i]
我买了ESP 8266 01做控制用,但是在主循环里面我用了while死循环,结果诡异的是在判断完SendDataFlage等于1,执行完这个If判段语句后,他的while死循环就执行不下去了,就在这里断掉了,最离谱的是我做的串口中断判断函数,在接收到6666666011,之后执行完蜂鸣器响之后,也不执行向下语句了,我在memset函数那里做了蜂鸣器响的功能,结果却发现语句完全没有执行到这里。我最后单独运行串口中断接受函数或SendDataFlage函数,while循环语句就很顺畅的执行了,实在找不到那里出错了,求大家指点。#include #include #include #include #include #include #include "usart.h"#include "wifi.h"sbit BUZZ = P2^3; //蜂鸣器控制引脚sbit Pow = P1^0;sbit Pow1 = P0^0;unsigned char SendDataFlage = 0;unsigned char id;char Recive_table[20]=""; //接收缓冲最大20个字节//unsigned char data Recive_table[20]; char Recive_state = 0; //接收完成标志int main (void){ /********************功能初始化***********************/ Uart_Init();//串口初始化,波特率为9600 Pow = 1; ms_delay(1000) ; ms_delay(1000) ; //BUZZ=0; ms_delay(1000) ; ms_delay(1000) ; ms_delay(1000) ; //BUZZ=1; ES = 0; ti = 1; // printf("AT+CIPSTART="TCP""192.168.1.2"8080rn"); BUZZ=0; ms_delay(1000) ;// printf("AT+CIPSTART="TCP""192.168.1.2"8080rn"); //BUZZ=1; ms_delay(1000) ;// printf("AT+CIPSTART="TCP""192.168.1.2"8080rn"); //BUZZ=0; ms_delay(1000) ; ms_delay(1000) ; ms_delay(1000) ;// printf("AT+CIPSTART="TCP""192.168.1.2"8080rn"); BUZZ=1; ms_delay(1000) ; ms_delay(1000) ; ms_delay(1000) ; printf("AT+CIPSTART="TCP""192.168.1.2"8080rn"); //BUZZ=0; ms_delay(1000) ; printf("AT+CIPSEND=12rn"); ms_delay(1000) ; //BUZZ=1; printf("666666601okrn"); //BUZZ=0; while(!TI); TI = 0; Recive_state = 0; //EA = 1; ES = 1; ms_delay(1000) ; ms_delay(1000) ; BUZZ=1; SendDataFlage=1; BUZZ=0; ms_delay(1000) ; BUZZ=1; start1:while(1){ ms_delay(100) ; if(SendDataFlage==1) { SendDataFlage=0; ES = 0; TI = 1; printf("AT+CIPSEND=12rn"); BUZZ=0; ms_delay(1000) ; printf("666666601okrn"); while(!TI); TI = 0; Recive_state = 0; ES = 1; PS = 1; BUZZ=1; ms_delay(1000) ; ms_delay(1000) ; } if(Recive_state == 1) { if(strstr(Recive_table"6666666011")) { ES=0; TI=1; printf("AT+CIPSEND=15rn"); ms_delay(1000) ; printf("%cn666666601onrn"); BUZZ =0; Pow = 0; Pow1 = 0; for(d=0;d<=5;d++) { for(i=0;i<=30;i++) { ms_delay(1000) ; } } Pow = 1; Pow1 = 1; printf("AT+CIPSEND=16rn"); ms_delay(1000) ; printf("%cn666666601offrn"); //while(!TI) TI=0; Recive_state = 0; ES=1; SendDataFlage=1; BUZZ =1; goto start1; } else if(strstr(Recive_table"666666601ok")) { ES=0; TI=1; BUZZ =0; ms_delay(1000) ; BUZZ =1; while(!TI) TI=0; Recive_state = 0; ES=1; SendDataFlage=1; goto start1; } RI = 0; ES = 0; TI=0; Recive_state = 0; ES = 1; SendDataFlage=1; goto start1; } BUZZ=0; memset(Recive_table'�'20); //memset(Recive_table020*sizeof(char)); Recive_state = 0; TI=0; ES=1; //打开接收标志位 PS = 1; SendDataFlage=1; ms_delay(1000) ; BUZZ = 1; goto start1; } } /****************************************************/ /******************************************************************函 数: void Uart_Interrupt() interrupt 4功 能: 串口中断函数将收到的字符存到Recive_table[]数组中参 数: 无返回值: 无*******************************************************************/void Uart_Interrupt() interrupt 4 { static char i=0; //因为是一位一位接收,所以用static if(RI==1) { ES = 0; RI=0; Recive_table[i]=SBUF; i++; if((Recive_table[i-1] == 'n')) { Recive_table[i]='�'; i=0; Recive_state = 1; } ES = 1; } if(TI) { TI = 0; ES = 1; } } |
|
相关推荐
1个回答
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
203 浏览 0 评论
761 浏览 0 评论
806 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
743 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1195 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11806 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 18:25 , Processed in 0.544717 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号