我使用的单片机是stm32f103c8t6最小系统板,在与模块的串口通信中出了问题
以下是我cuba Mx 中的串口配置,是串口二,中断也使能了。当然模块的波特率也设置成9600了
然后是串口中断函数
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等等等等 ,按理说也能让小灯的状态变化,可是并没有
所以想问问是什么原因