求助,使用esp8266-01s模块时出现的问题


我使用的单片机是stm32f103c8t6最小系统板,在与模块的串口通信中出了问题

 求助,使用esp8266-01s模块时出现的问题_第1张图片

以下是我cuba Mx 中的串口配置,是串口二,中断也使能了。当然模块的波特率也设置成9600了

求助,使用esp8266-01s模块时出现的问题_第2张图片

然后是串口中断函数

void USR_UART2_IRQHandler(void)
{
    if(__HAL_UART_GET_FLAG(&huart2,UART_FLAG_RXNE)!=RESET)
    {
        __HAL_UART_ENABLE_IT(&huart2,UART_IT_IDLE);
        USART2_RXBUFF[USART2_RXCOUNT]=(uint8_t)(huart2.Instance->DR&(uint8_t)0x00ff);
        USART2_RXCOUNT++;
        __HAL_UART_CLEAR_FLAG(&huart2,UART_FLAG_RXNE);
    }
    if(__HAL_UART_GET_FLAG(&huart2,UART_FLAG_IDLE)!=RESET)
    {
        __HAL_UART_DISABLE_IT(&huart2,UART_IT_IDLE);
        USART2_RXSTAT=1;
    }

经过测试,接收和发送都是没问题的

下面是8266-01s模块用到的AT指令:

AT+CWMODE=2

AT+RST

AT+CWSAP="8266","123456789",11,2

AT+CIPMUX=1(在程序中写了)

AT+CIPSERVER=1,1001(在程序中写了)

为了测试单片机是否可以接收到模块发送来的数据,写了以下程序

int main(void)

{

        if(USART2_RXSTAT)
         {
                 if((USART2_RXBUFF[0]=='+'))
                 {
                        HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
                  }

                  USART2_RXSTAT=0;
                  USART2_RXCOUNT=0;
                  memset(USART2_RXBUFF,0,sizeof(USART2_RXBUFF));
        }

}

模块发送给单片机的数据首位是一个‘+’

模块是AP模式,当我用手机连接模块的wifi时,小灯的状态发生两次变化,因为模块会发送两个首位是‘+’的信息(懒得做一遍然后截图了)

手机与模块断开连接的时候小灯的状态也会变化

但是!连接wifi后我用手机的调试助手发送的信息不会让小灯的状态变化。模块发送的数据格式是  +IPD等等等等   ,按理说也能让小灯的状态变化,可是并没有

所以想问问是什么原因

你可能感兴趣的:(单片机,stm32,嵌入式硬件)