网站建设包括的内容有什么,新乡搜狗网站推广工具,linux软件开发工具,WordPress评论加签到一、蓝牙概要 蓝牙是一种常见的无线通信协议#xff0c;通常用于短距离通信。蓝牙分为经典蓝牙和低功耗蓝牙(BLE)。经典蓝牙通常用于需要持续传输数据的设备#xff0c;比如蓝牙耳机等。低功耗蓝牙通常用于只需要间歇性传输数据的设备#xff0c;比如运动手环。 蓝牙…一、蓝牙概要 蓝牙是一种常见的无线通信协议通常用于短距离通信。蓝牙分为经典蓝牙和低功耗蓝牙(BLE)。经典蓝牙通常用于需要持续传输数据的设备比如蓝牙耳机等。低功耗蓝牙通常用于只需要间歇性传输数据的设备比如运动手环。 蓝牙通信通常分为主机和从机通常我们的单片机设备被当作从机手机等终端设备作为主机。在建立蓝牙通信前从机要向外广播自己的信息。 蓝牙通信协议比较复杂比如在低功耗蓝牙中就包含GAP广播协议GATT协议等知识点。在学习单片机的过程中可以使用BT24蓝牙串口透传模块该模块的作用可以讲复杂的蓝牙协议简化为”串口透传“。所谓串口透传就是将STM32发送给其的数据原封不动地转发给与其连接的设备。并且可以将主机发送的数据通过串口转发给STM32.。 注意连接模块时地线接地线(GND)5V接5VTX与RX交叉连接
二、准备工作 在终端输入命令控制红绿小灯亮灭
1.首先我们在CubeIDE将蓝牙模块连接的USART3设置为异步模式。蓝牙模块的默认波特率为9600在参数设置界面中找到波特率参数修改成9600 2.为USART3开启中断 3.并且为USART3开启DMA通道 4.设置红绿蓝小灯为GPIO_OUTPUT。
5.保存并生成代码。.
6.参考如下连接的代码将huart2的相关变量改成huart3的相关变量。具体实现见最后
STM32串口轮询模式、中断模式、DMA模式和接收不定长数据-CSDN博客
三.使用BLE调试功能调试代码 通常使用蓝牙调试助手来调试代码。或者用 nRF Connect 也行。但是在学习环境上可以在波特律动 串口助手 进行调试。 四、主要代码。
/* USER CODE BEGIN PV */
uint8_t recvDate[20];
/* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_DMA_Init(void);
static void MX_USART3_UART_Init(void);
/* USER CODE BEGIN PFP *//* USER CODE END PFP *//* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size){if(huart huart3){//把接收到的数据发给终端进行打印HAL_UART_Transmit_DMA(huart3,recvDate,Size);GPIO_PinState pinstate GPIO_PIN_RESET;if(recvDate[1] 1){pinstate GPIO_PIN_SET;}if(recvDate[0] R){HAL_GPIO_WritePin(redLED_GPIO_Port, redLED_Pin, pinstate);}else if(recvDate[0] B){HAL_GPIO_WritePin(blueLED_GPIO_Port,blueLED_Pin, pinstate);}else if(recvDate[0] G){HAL_GPIO_WritePin(greenLED_GPIO_Port,greenLED_Pin, pinstate);}//继续接收即将要接收的数据HAL_UARTEx_ReceiveToIdle_DMA(huart3, recvDate, sizeof(recvDate));//关闭DMA传输过半中断__HAL_DMA_DISABLE_IT(hdma_usart3_rx,DMA_IT_HT);}
}