小白转行入门STM32----手机蓝牙控制STM32单片机点亮LED( 三 )


STM32是通过USART连接蓝牙模块 , UART属于异步全双工通信 , 包含两根线单向通信线 , 分别接上述提到的两个引脚 。我用的是STM32F103C8T6芯片 , 它自带有三组USART , 这里选用USART1 , CubeIDE会自动选择PA10和PA9两个引脚与蓝牙进行通信 。具体如下图:

小白转行入门STM32----手机蓝牙控制STM32单片机点亮LED

文章插图
小白转行入门STM32----手机蓝牙控制STM32单片机点亮LED

文章插图
小白转行入门STM32----手机蓝牙控制STM32单片机点亮LED

文章插图
2.3 编码在这里添加如下代码:
  uint8_t rx = 0; // 定义一个无符号整形数 , 用于接收蓝牙发送的数据 。  while (1)  {      /* USER CODE END WHILE */      // 用于接受来自蓝牙发来的数据 。      // &huart1 是一个封装好的结构体 , 代表那两个引脚 , HAL_UART_Receive函数会自动识别使用PA10进行接受数据 。      // &rx , 接收蓝牙信息放到rx中 , 由于rx是整形数字 , 直接传递给函数 , 传过去的只是副本 , 所以要传递其引用 。      // 1 , 表示接受一个字节(8个二进制) 。      // HAL_MAX_DELAY 表示接受一个蓝牙信号后 , 单片机就停下来死等下次接收蓝牙信息 。      HAL_UART_Receive(&huart1, &rx, 1, HAL_MAX_DELAY);      // rx == '1', 蓝牙传输过来的是一个字符1而不是数字 。  if (rx == '1'){       HAL_GPIO_WritePin(GPIOA, LED_Pin, GPIO_PIN_SET); # 输出高电平 , 灯亮      }else{       HAL_GPIO_WritePin(GPIOA, LED_Pin, GPIO_PIN_RESET); # 输出低电平 , 灯灭   }    /* USER CODE BEGIN 3 */  }
小白转行入门STM32----手机蓝牙控制STM32单片机点亮LED

文章插图
编译代码并下载到单片机上 。
2.3 手机控制二极管
  1. 搜索下载一款手机蓝牙调试助手 , 我用的是BLE调试助手这款APP 。
  2. 按照蓝牙名字 , 搜索并连接上蓝牙 , 然后给蓝牙发送"1", 即可灯亮 , 发送其他则灯灭 。
【小白转行入门STM32----手机蓝牙控制STM32单片机点亮LED】

经验总结扩展阅读