完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我的STM32F103和蓝牙通信只能发不能收,和电脑的就没问题,模块也用51试过了,也没问题,求大神指教
void USART1_IRQHandler(void) { u8 i=0; if(USART_GetiTStatus(USART1,USART_IT_RXNE)!=RESET){ i=USART_ReceiveData(USART1); USART_SendData(USART1,i); while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET); USART_ClearFlag(USART1,USART_FLAG_TXE); USART_ClearITPendingBit(USART1,USART_IT_RXNE); GPIO_Write(GPIOB,0xaaaa); } } #include "stm32f10x_exti.h" #include "stm32f10x_usart.h" #include "stm32f10x_rcc.h" #include "stm32f10x_tim.h" #include "stm32f10x_usart.h" #include "misc.h" void USART_RCC_Configuration(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); } void USART_GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(GPIOB,&GPIO_InitStructure); } void USART_NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; NVIC_InitStructure.NVIC_IRQChannelSubPriority=1; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure); } void USART_Configuration(void) { USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate=9600; USART_InitStructure.USART_WordLength=USART_WordLength_8b; USART_InitStructure.USART_StopBits=USART_StopBits_1; USART_InitStructure.USART_Parity=USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; USART_Init(USART1,&USART_InitStructure); USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); USART_Cmd(USART1,ENABLE); USART_ClearFlag(USART1,USART_FLAG_TC); } void USART_SendStr(u8 *s) { u8 i; for(i=0;s!=0;i++){ USART_SendData(USART1,s); while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET); USART_ClearFlag(USART1,USART_FLAG_TXE); } } #include "stm32f10x.h" void USART_Configuration(void); void USART_NVIC_Configuration(void); void USART_GPIO_Configuration(void); void USART_RCC_Configuration(void); void USART_SendStr(u8 *s); void Delay(u32 t) { while(t--); } int main(void) { /* 设置系统时钟为72M */ SystemInit(); USART_RCC_Configuration(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); USART_GPIO_Configuration(); USART_NVIC_Configuration(); USART_Configuration(); USART_SendStr("AT+NAMEB-watchrn"); Delay(6000000); USART_SendStr("ATrn"); Delay(6000000); USART_SendData(USART1,'a'); while(1){ } } |
|
相关推荐
41个回答
|
|
关注一下
|
|
|
|
@发烧友
|
|
|
|
我也碰到这个问题,调了几天了也还是没有调通
|
|
|
|
应该是串口中断接收中断的设置有问题,建议先看看有数据来了之后是否进了串口接收中断。
|
|
|
|
用电脑模拟是可以的,用蓝牙就没进去,中断标志都没变
|
|
|
|
你使用的蓝牙模块是什么模块,我现在怀疑是不是接口问题
|
|
|
|
我用的是bt05
|
|
|
|
蓝牙模块我用51的单片机试了,可以收发
|
|
|
|
顶一下~
|
|
|
|
不要沉啊~
|
|
|
|
急急急啊!
|
|
|
|
求指导!!!
|
|
|
|
硬件连接什么的确定没问题吧!
|
|
|
|
是不是 你发送数据的时候没有延时,导致蓝牙没有收到正确的数据
|
|
|
|
而且你看下 void USART_SendStr(u8 *s) { u8 i; for(i=0;s!=0;i++){ USART_SendData(USART1,s); while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET); USART_ClearFlag(USART1,USART_FLAG_TXE); } } 这个FOR循环是有问题的s!=' |