新手入门
- 积分
- 5
- 金钱
- 5
- 注册时间
- 2020-11-5
- 在线时间
- 8 小时
|
16金钱
下面得程序是我用的mini板ESP8266例程改的,把程序移植到了C8T6上跑,DMA发送,串口中断接收(就是例程的驱动程序,没改过)
ESP8266是AP模式。C8T6向手机发送指定数据。手机APP控制LED灯。
芯片一直在发送数据,发送得很快,我手机一直能接收到。但是手机发过来的数据,芯片只能偶尔接收到,发送100次都不一定能接收到一次。
菜鸟萌新想问为什么会这样子,要怎么改芯片才能及时收到数据。
此外,我在MINI开发板上跑的时候,为什么数据发送得没这么快。芯片也只是偶尔不能接收到数据。
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200);
USART2_Init(115200);
LED_Init();
wifi_ap_init();
USART2_RX_STA=0;
while(1)
{
if(t%500==0)//每100ms读取一次
{
{
sprintf(temp,"%d;%d;%d;\r\n",1, 2,3 );
atk_8266_send_cmd("AT+CIPSEND=0,10","OK",100);
atk_8266_send_data(temp,"OK",100);
}
}
if(USART2_RX_STA&0X8000) //接收到一次数据了
{
rlen=USART2_RX_STA&0X7FFF; //得到本次接收到的数据长度
USART2_RX_BUF[rlen]=0; //添加结束符
printf("%s",USART2_RX_BUF); //发送到串口
switch(USART2_RX_BUF[11]) //比较11位数据控制LED通断
{
case '1' ED0=0;break;
case '0' ED0=1;break;
case '2' ED0=0;break;
case '3' ED0=1;break;
}
USART2_RX_STA=0;
}
t++;
}
}
|
|