STM32学习——项目三:蓝牙插座_风扇_灯

目录

项目需求

项目框图

硬件清单

项目设计及实现

项目设计

项目实现

1. 串口非中断法

2. 串口中断法


项目需求

通过蓝牙模块,实现手机控制蓝牙插座 / 风扇 / 灯。
本质:
  1. 采用蓝牙的透传功能;
  2. 控制 IO 口的输出。

项目框图

硬件清单

HC01 蓝牙模块
CH340
杜邦线

项目设计及实现

项目设计

  • HC01_TX -- RX1
  • HC01_RX -- TX1

项目实现

1. 串口非中断法

while (1)
  {
	HAL_UART_Receive(&huart1,cmd,20,100);
    //HAL_UART_Transmit(&huart1,cmd,sizeof(cmd),100);
    printf("%s",cmd);
		if(!strcmp((const char *)cmd,"open"))
		{
			HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);
			if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_8) == GPIO_PIN_RESET )
				printf("LED1已打开\r\n");
		}else if( !strcmp((const char *)cmd,"close"))
		{
			HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);
			if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_8) == GPIO_PIN_SET )
				printf("LED1已关闭\r\n");
		}else
		{
			if(cmd[0] != '\0')
			{
				printf("输入错误:%s\r\n",cmd);
			}
		}
    memset(cmd,'\0',sizeof(cmd));
  }

2. 串口中断法

while (1)
  {
		//判断判断串口是否接收完成
		if(UART1_RX_STA & 0x8000)
		{
			printf("收到数据:");
			if(UART1_RX_STA & 0x8000)
			{
				//printf("收到数据:");
				if (!strcmp((const char *)UART1_RX_Buffer, "open")) 
				{
					HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);
					if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_8) == GPIO_PIN_RESET)
					printf("LED1已打开\n");
				}else if(!strcmp((const char *)UART1_RX_Buffer, "close")) {
					HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);
					if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_8) == GPIO_PIN_SET)
					printf("LED1已关闭\n");
				} else 
				{
					if(UART1_RX_Buffer[0] != '\0')
						printf("指令发送错误:%s", UART1_RX_Buffer);
				}
			}
			//printf("hello world\r\n");
			memset(UART1_RX_Buffer,0,sizeof(UART1_RX_Buffer));
			HAL_Delay(40);
			
			//printf("\r\n");
			// 重新开始下一次接收
			UART1_RX_STA = 0;
		}
		
  }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值