本期实现的就是通过蓝牙透传来控制stm32小灯亮灭,我们在串口发送数据包【0XAA 0X05 0X01 0XFF 0XAF】就可以开启第一个小灯。 ##【0XAA 0X05 0X01 0XFF 0XAF】 第0位是包头:AA 第1位数据长度:05 第2位数据位:01 //代表第一个小灯 第3位数据:FF或者00 //代表小灯亮灭 第4位校验和:AF //就是前面的所有之和,取最后两位 ##使用方法 **芯片端口要开启HUART1,并且打开端口的DMA和NVIC** ##接线方法 RX接蓝牙TX TX接蓝牙RX **电源最好匹配,不然会出现莫名其妙错误** ---- /* USER CODE BEGIN PV */ uint8_t receiveDate[50]; //在pv里定义长度50的变量 /* USER CODE END PV */ ------------------- /* USER CODE BEGIN 0 */ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size){ //DMA的空闲中断处理函数 if(huart == &huart1){ //判断是那个通道触发了回调函 HAL_UART_Transmit_DMA(&huart1, receiveDate, Size); //返回接收到的数据 if(receiveDate[0] == 0xAA){ //判断第0位 是否为AA的包头 if(receiveDate[1] == Size){ //判断第一位是否为 整个数据长度 uint8_t sum = 0; //定义一个sum变量计算整个包(除了最后一位)的总和 for (int i = 0; i < Size - 1; i++){ sum += receiveDate[i]; } if(sum == receiveDate[Size - 1]){ //对比计算的总和是否等于校验核,如果等于就用for循环处理数据 for (int i = 2; i < Size -1; i += 2){ //因为数据从第2位开始,每隔2位就是一个数据 GPIO_PinState state = GPIO_PIN_SET; //定义一个GPIO_PinState类型,并且给默认值为高 if(receiveDate[i + 1] == 0x00){ //判断数据第3位是00就把state设置成低电平 state = GPIO_PIN_RESET; } //下面就是用if 判断每个小灯状态,然后赋予相应值 if(receiveDate[i] == 0x01){ HAL_GPIO_WritePin(LED_RED_GPIO_Port, LED_RED_Pin, state); }else if(receiveDate[i] == 0x02){ HAL_GPIO_WritePin(LED_BLE_GPIO_Port, LED_BLE_Pin, state); }else if(receiveDate[i] == 0x03){ HAL_GPIO_WritePin(LED_GRE_GPIO_Port, LED_GRE_Pin, state); } } } } } HAL_UARTEx_ReceiveToIdle_DMA(&huart1, receiveDate, sizeof(receiveDate)); //重新开启数据接收 __HAL_DMA_DISABLE_IT(&hdma_usart1_rx,DMA_IT_HT); //关闭传输过半中断 } } /* USER CODE END 0 */ --------- /* USER CODE BEGIN 2 */ //在主函数里启用中断接收 HAL_UARTEx_ReceiveToIdle_DMA(&huart1, receiveDate, sizeof(receiveDate)); __HAL_DMA_DISABLE_IT(&hdma_usart1_rx,DMA_IT_HT); /* USER CODE END 2 */ 我在网上买了2个透传模块JDY-13-SSP和HC-04,因为我已经调试好ttl串口了,所以直接插上蓝牙透传模块应该就可以调试了,但是在这里就出现了问题 ##1.JDY-13-SSP错误问题 **发送数据乱码**:3.3接成5v了所以导致乱码,接正确后这个模块刚开始发送数据也是乱码,过了10秒就正确了, **无法收到数据** 总是收不到还时好时坏,在芯片一直发送数据时,接收数据就是正常的,应该是模块问题,我就退货了。 ##2.HC-04模块 虽然贵点,但是暂时没遇到问题 最后修改:2024 年 09 月 13 日 10 : 56 PM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 ×Close 赞赏作者 扫一扫支付 支付宝支付 微信支付