OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3354|回复: 3

ESP+STM32指南者如何实现双向网络通信双线程互不干扰

[复制链接]

2

主题

16

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2019-3-11
在线时间
16 小时
发表于 2019-3-11 11:02:48 | 显示全部楼层 |阅读模式
1金钱
串口中断函数
void DEBUG_USART_IRQHandler(void)
{
        if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET)
        {               
               
                ucTemp = USART_ReceiveData(DEBUG_USARTx);

  //  USART_SendData(DEBUG_USARTx,ucTemp);   //串口监视作用
               
                cStr[item]=ucTemp;
                item++;
               
        }         
}






void ESP8266_StaTcpClient_UnvarnishTest ( void )
{
        uint8_t ucStatus;
       
       
               
  printf ( "\r\正在配置ESP8266 ......\r\n" );

        macESP8266_CH_ENABLE();
       
        ESP8266_AT_Test ();
       
        ESP8266_Net_Mode_Choose ( STA );

  while ( ! ESP8266_JoinAP ( macUser_ESP8266_ApSsid, macUser_ESP8266_ApPwd ) );       
       
        ESP8266_Enable_MultipleId ( DISABLE );
       
        while ( !        ESP8266_Link_Server ( enumTCP, macUser_ESP8266_TcpServer_IP, macUser_ESP8266_TcpServer_Port, Single_ID_0 ) );
       
        while ( ! ESP8266_UnvarnishSend () );
       
        printf ( "\r\n配置 ESP8266 完毕 \r\n" );
       




//                def = ESP8266_ReceiveString ( ENABLE );                                                                                           //receive data
//while (*def!='\0')

//                do{
//                USART_SendData(DEBUG_USARTx , *def );
//                def++;
//                }
//                while(*def!='\0');

//                       
                       
                       
                       
                       
                       
        while ( 1 )
        {               

                ESP8266_SendString ( ENABLE,cStr, 0, Single_ID_0 );               //发送数据
               
                item=0;
               
                Delay_ms ( 100 );
//               
//       
                if ( ucTcpClosedFlag )                                             //检测是否失去连接
                {
                        ESP8266_ExitUnvarnishSend ();                                    //退出透传模式
                       
                        do ucStatus = ESP8266_Get_LinkStatus ();                         //获取连接状态
                        while ( ! ucStatus );
                       
                        if ( ucStatus == 4 )                                             //确认失去连接后重连
                        {
                                printf ( "\r\n正在重新连接热点 ......\r\n" );
                               
                                while ( ! ESP8266_JoinAP ( macUser_ESP8266_ApSsid, macUser_ESP8266_ApPwd ) );
                               
                                while ( !        ESP8266_Link_Server ( enumTCP, macUser_ESP8266_TcpServer_IP, macUser_ESP8266_TcpServer_Port, Single_ID_0 ) );
                               
                                printf ( "\r\n连接热点成功\r\n" );

                        }
                       
                        while ( ! ESP8266_UnvarnishSend () );               
                       
                }
               

        }
       
}











想把receive data 和 send data 结合在一起,大神说要写个线程;或者用一个互斥标志,但是还是不知道怎么弄,求大佬帮忙解决!谢谢,解决了50R红包!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2019-3-11
在线时间
16 小时
 楼主| 发表于 2019-3-11 15:12:29 | 显示全部楼层
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14286
金钱
14286
注册时间
2018-8-3
在线时间
1147 小时
发表于 2019-3-11 22:21:13 | 显示全部楼层
可以分享下你的解决办法哦
啊哈~加油!!
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2019-3-11
在线时间
16 小时
 楼主| 发表于 2019-3-28 18:32:51 | 显示全部楼层
线程处理,
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 22:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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