STM32应用(四)蓝牙HC-05模块

参考博客

串口实现HC-05蓝牙模块与手机通信

欲实现功能
手机发送数字0,1来控制板子上LED0,1,的翻转。

1.接收和发送数据

配置串口,并开启DMA。
在这里插入图片描述

开启DMA,注意添加宏定义和变量声明。

  /* USER CODE BEGIN USART2_Init 2 */
	__HAL_UART_ENABLE_IT(&huart2,UART_IT_IDLE);  //开启空闲中断
	HAL_UART_Receive_DMA(&huart2,RxBuffer,RXBUFFER_LEN);  //开启DMA的接收
  /* USER CODE END USART2_Init 2 */

重写printf函数。

int fputc(int c,FILE *stream)
{
	uint8_t ch[1]={c};
	HAL_UART_Transmit(&huart2,ch,1,0xFFFF);
	return c;
}
	printf("this is a test\n");

可以在手机上看到this is a test,表明电脑数据发送成功。

数据的发送,蓝牙发送的数据显示在电脑上是ASCII码的形式。
例如我手机发送一个 1,在监视窗口显示的就是49。
在这里插入图片描述
在配置完成LED0,LED1的相关配置后,写了一个翻转LED的函数,根据手机发送数据的不同,作为一个判断条件,进而执行相应的函数。

void Check_Rx()
{
		if(RX_flag == 1)   //判断是否接收完成
		{
				printf("Rx_len = %d\n",Rx_len);
				printf("I got the message %s",RxBuffer);
//				for(uint8_t i=0;i<Rx_len;i++)  //清除接收的标志
//				{
//						RxBuffer[i] = 0;
//				}
				Rx_len=0;
				RX_flag = 0;
		}
}

void LED_toggle(void)
{
			if(RX_flag == 1)   //判断是否接收完成
		{
				if(RxBuffer[0]==48)
				{
					HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
				}
				else if(RxBuffer[0]==49)
			{
				HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_5);
			}
		}
}

2.现象展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实现灯的翻转。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值