当前位置:   article > 正文

STM32:使用蓝牙模块_蓝牙模块与stm32单片机连接

蓝牙模块与stm32单片机连接

一、蓝牙概要       

        蓝牙是一种常见的无线通信协议,通常用于短距离通信。蓝牙分为经典蓝牙和低功耗蓝牙(BLE)。经典蓝牙通常用于需要持续传输数据的设备,比如蓝牙耳机等。低功耗蓝牙通常用于只需要间歇性传输数据的设备,比如运动手环。

        蓝牙通信通常分为主机和从机,通常我们的单片机设备被当作从机,手机等终端设备作为主机。在建立蓝牙通信前,从机要向外广播自己的信息。

        蓝牙通信协议比较复杂,比如在低功耗蓝牙中就包含GAP广播协议,GATT协议等知识点。在学习单片机的过程中,可以使用BT24蓝牙串口透传模块,该模块的作用可以讲复杂的蓝牙协议简化为”串口透传“。所谓串口透传,就是将STM32发送给其的数据原封不动地转发给与其连接的设备。并且可以将主机发送的数据通过串口转发给STM32.。

        注意:连接模块时,地线接地线(GND),5V接5V,TX与RX交叉连接

二、准备工作

        在终端输入命令控制红绿小灯亮灭

1.首先我们在CubeIDE将蓝牙模块连接的USART3设置为异步模式。蓝牙模块的默认波特率为9600,在参数设置界面中找到波特率参数修改成9600

2.为USART3开启中断

3.并且为USART3开启DMA通道

4.设置红绿蓝小灯为GPIO_OUTPUT。

5.保存并生成代码。.

6.参考如下连接的代码,将huart2的相关变量改成huart3的相关变量。具体实现见最后

STM32:串口轮询模式、中断模式、DMA模式和接收不定长数据-CSDN博客

三.使用BLE调试功能调试代码

       通常使用蓝牙调试助手来调试代码。或者用 nRF Connect 也行。但是在学习环境上可以在波特律动 串口助手 进行调试。

四、主要代码。

  1. /* USER CODE BEGIN PV */
  2. uint8_t recvDate[20];
  3. /* USER CODE END PV */
  4. /* Private function prototypes -----------------------------------------------*/
  5. void SystemClock_Config(void);
  6. static void MX_GPIO_Init(void);
  7. static void MX_DMA_Init(void);
  8. static void MX_USART3_UART_Init(void);
  9. /* USER CODE BEGIN PFP */
  10. /* USER CODE END PFP */
  11. /* Private user code ---------------------------------------------------------*/
  12. /* USER CODE BEGIN 0 */
  13. void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size){
  14. if(huart == &huart3){
  15. //把接收到的数据,发给终端进行打印
  16. HAL_UART_Transmit_DMA(&huart3,recvDate,Size);
  17. GPIO_PinState pinstate= GPIO_PIN_RESET;
  18. if(recvDate[1] == '1'){
  19. pinstate = GPIO_PIN_SET;
  20. }
  21. if(recvDate[0] == 'R'){
  22. HAL_GPIO_WritePin(redLED_GPIO_Port, redLED_Pin, pinstate);
  23. }else if(recvDate[0] == 'B'){
  24. HAL_GPIO_WritePin(blueLED_GPIO_Port,blueLED_Pin, pinstate);
  25. }else if(recvDate[0] == 'G'){
  26. HAL_GPIO_WritePin(greenLED_GPIO_Port,greenLED_Pin, pinstate);
  27. }
  28. //继续接收即将要接收的数据
  29. HAL_UARTEx_ReceiveToIdle_DMA(&huart3, recvDate, sizeof(recvDate));
  30. //关闭DMA传输过半中断
  31. __HAL_DMA_DISABLE_IT(&hdma_usart3_rx,DMA_IT_HT);
  32. }
  33. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/165636
推荐阅读
相关标签
  

闽ICP备14008679号