新手入门
- 积分
- 5
- 金钱
- 5
- 注册时间
- 2023-2-3
- 在线时间
- 1 小时
|
1金钱
蓝牙模块用的是非正点的zx-d30,用usb-ttl直接与蓝牙模块相连的话,电脑上的串口调试助手和手机的蓝牙助手能够正常通信,但是连接到stm32的pa9和pa10端口上,就不能正常通信了。电脑串口助手上发送1,电脑和手机上的接收区都会显示1,灯点亮,但在手机的蓝牙助手上发送1,只能在手机的接收区中显示1,但电脑上接收区不显示1,灯也点不亮。总的来说,当电脑串口发送数据1时,手机的接收区与电脑的接收区同步,单片机有反应,led点亮;当手机串口发送数据1时,只有手机上的接收区有显示,电脑串口助手上的接收区没有,单片机不反应,led不点亮。
蓝牙模块: RX->pa9
TX->pa10
led灯: pa0
/*faj.h*/
#ifndef __FAJ_H
#define __FAJ_H
extern uint8_t uu;
void faj_init(void);
void T(uint8_t k);
void USART1_IRQHandler(void);
#endif
*********************************************
/*faj.c*/
#include "stm32f10x.h"
uint8_t uu;
void faj_init(void)
{ GPIO_InitTypeDef p;USART_InitTypeDef l;NVIC_InitTypeDef i;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
p.GPIO_Mode=GPIO_Mode_Out_PP;
p.GPIO_Pin=GPIO_Pin_0;
p.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&p);
p.GPIO_Mode=GPIO_Mode_AF_PP;
p.GPIO_Pin=GPIO_Pin_9;
p.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&p);
p.GPIO_Mode=GPIO_Mode_IN_FLOATING;
p.GPIO_Pin=GPIO_Pin_10;
p.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&p);
l.USART_BaudRate=9600;
l.USART_HardwareFlowControl= USART_HardwareFlowControl_None;
l.USART_Mode=USART_Mode_Tx | USART_Mode_Rx ;
l.USART_Parity=USART_Parity_No;
l.USART_StopBits=USART_StopBits_1;
l.USART_WordLength=USART_WordLength_8b;
USART_Init(USART1,&l);
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
i.NVIC_IRQChannel=USART1_IRQn;
i.NVIC_IRQChannelCmd=ENABLE;
i.NVIC_IRQChannelPreemptionPriority=1;
i.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&i);
USART_Cmd(USART1,ENABLE);
}
void T(uint8_t k)
{
USART_SendData(USART1,k);
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
}
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1,USART_IT_RXNE)==SET)
{uu=USART_ReceiveData(USART1);
T(uu);
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
}
}
********************************************************
/*main.c*/
#include "stm32f10x.h"
#include "LCD.h"
#include "Delay.h"
#include "faj.h"
int main(void)
{
faj_init();
while(1){
T(0x41);Delay_s(5);
if(uu==0x31) GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)(1));
if(uu==0x30) GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)(0));
}
}
|
-
-
|