萌新來求助各位大佬,我買了HC-05藍牙模塊,用的是普中stm32板子,準備用手機APP向藍牙傳輸數(shù)據(jù)來控制stm32,在藍牙調試的時候,用stm32與電腦通過USB轉TTL連接,可以進入AT模式,可以正常返回"OK"的,也能把波特率從9600改為115200,進入工作模式,手機用串口APP能夠連接藍牙,并且能互相發(fā)送和接收,然后我把藍牙連接到stm32板子上后,電腦能與stm32通信,手機能接收藍牙發(fā)送的數(shù)據(jù),但是手機發(fā)送數(shù)據(jù)給藍牙,藍牙沒反應,電腦也沒顯示手機發(fā)送的數(shù)據(jù),使用的是stm32的usart1串口,PA9作為TXD,PA10作為RXD,VCC和GND都連接在STM32板子上,求解答,已經困擾好幾天了,波特率是一致的,線路也沒問題
1.jpg (4.06 MB, 下載次數(shù): 23)
下載附件
2019-12-26 20:00 上傳
~9R25~JXBUC{YKE6MZR2NV9.png (67.2 KB, 下載次數(shù): 27)
下載附件
2019-12-26 20:05 上傳
3.png (71.99 KB, 下載次數(shù): 25)
下載附件
2019-12-26 20:00 上傳
如上圖,電腦發(fā)送4,stm32能返回4,手機也能接受到4,但手機發(fā)送5,電腦卻沒顯示5,當初用USB轉TTL是沒問題的,電腦能接收手機發(fā)送的信息,代碼如下
#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);
}