找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1945|回复: 4
收起左侧

stm32单片机+esp8266 如何同时控制和发送数据?

[复制链接]
ID:603309 发表于 2019-8-25 16:09 | 显示全部楼层 |阅读模式
如题,while ( 1 )
        {        
                //这是控制命令
                if(USART2_RX_STA&0x8000)
                {                                          
                        len=USART2_RX_STA&0x3fff;//得到此次接收到的数据长度
                        
                        //收到电脑发来的请求控制单片机
                        if(USART2_RX_BUF[len-1]==0x30){                        
                                
                        } else if(USART2_RX_BUF[len-1]==0x31){
                                LED2_ON;
                        }
                                
                        //把串口三接受到的数据传给串口一
                        /*
                        for(t=0;t<len;t++)
                        {
                                 USART_SendData(USART1, USART2_RX_BUF[t]);         //向串口1发送数据
                                 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
                        }
                        */
                        USART2_RX_STA=0;
                }
               
               
                //这是数据上传指令
                rtemp=(int)DS18B20_Get_Temp()-255;
                sprintf(str,"%d\r\n",rtemp);
                ESP8266_SendString ( DISABLE, str, 10, Multiple_ID_0 );
                delay_ms(1000);               
        }        


请问为什么两者不能同时工作,求解!

回复

使用道具 举报

ID:603309 发表于 2019-8-25 16:14 | 显示全部楼层
单独工作可以,但是两段代码放一起,只能数据上传,没办法控制,求救!
回复

使用道具 举报

ID:603612 发表于 2019-8-25 16:48 | 显示全部楼层
不是USART1吗,又变USAR2
回复

使用道具 举报

ID:517466 发表于 2019-8-25 21:55 | 显示全部楼层
同时工作,对于单核处理器是不可能的。只能考虑分时,或者中断系统(通过优先级方式控制)。如果数据传递是批量的话,可以考虑dma方式来处理,当数据传递完成后,发出中断信息。这样可以尽可能地避免数据丢失,当然前提是这个处理器提供DMA传递和DMA中断。
回复

使用道具 举报

ID:282095 发表于 2019-8-26 10:20 | 显示全部楼层
可以采用中断优先级的方式
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表