萌新來求助各位大佬,我買了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);
}