萌新来求助各位大佬,我买了HC-05蓝牙模块,用的是普中stm32板子,准备用手机APP向蓝牙传输数据来控制stm32,在蓝牙调试的时候,用stm32与电脑通过USB转TTL连接,可以进入AT模式,可以正常返回"OK"的,也能把波特率从9600改为115200,进入工作模式,手机用串口APP能够连接蓝牙,并且能互相发送和接收,然后我把蓝牙连接到stm32板子上后,电脑能与stm32通信,手机能接收蓝牙发送的数据,但是手机发送数据给蓝牙,蓝牙没反应,电脑也没显示手机发送的数据,使用的是stm32的usart1串口,PA9作为TXD,PA10作为RXD,VCC和GND都连接在STM32板子上,求解答,已经困扰好几天了,波特率是一致的,线路也没问题
如上图,电脑发送4,stm32能返回4,手机也能接受到4,但手机发送5,电脑却没显示5,当初用USB转TTL是没问题的,电脑能接收手机发送的信息,代码如下
#include "stm32f10x.h"
voidMy_USART1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStrue;
USART_InitTypeDef USART_InitStrue;
NVIC_InitTypeDef NVIC_InitStrue;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//GPIO????
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//??????
GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStrue.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&GPIO_InitStrue);
GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_InitStrue.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&GPIO_InitStrue);
USART_InitStrue.USART_BaudRate=115200;
USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
USART_InitStrue.USART_Parity=USART_Parity_No;
USART_InitStrue.USART_StopBits=USART_StopBits_1;
USART_InitStrue.USART_WordLength=USART_WordLength_8b;
USART_Init(USART1,&USART_InitStrue);
USART_Cmd(USART1,ENABLE);//????1
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//??????
NVIC_InitStrue.NVIC_IRQChannel=USART1_IRQn;
NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&NVIC_InitStrue);
}
void USART1_IRQHandler(void)
{
u8 res;
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
{
res= USART_ReceiveData(USART1);
USART_SendData(USART1,res);
}
}
intmain(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
My_USART1_Init();
while(1);
}