news 2026/7/5 2:01:50

Cubemx+stm32f103c8t6-板间无线通信蓝牙篇

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cubemx+stm32f103c8t6-板间无线通信蓝牙篇

本文与双轴摇杆篇共用一个工程,传输的数据是摇杆xy轴的两个四位ADC采样值

Cubemx+stm32f103c8t6-双轴摇杆篇

所用蓝牙模块为HC-05,开始前需配置好主从机,模块配置具体内容可以看下文。

HC-05蓝牙模块学习笔记

一、cubemax配置

1、主机

2、从机

二、代码

1、主机

发送7个字节到从机,包括两个帧头,四个数据字节以及一个校验位

uint16_t x_raw = adc_buf[0]; uint16_t y_raw = adc_buf[1]; if(abs((int16_t)x_raw - JOY_MID) < DEAD_ZONE) x_raw = JOY_MID; //简单消除死区 if(abs((int16_t)y_raw - JOY_MID) < DEAD_ZONE) y_raw = JOY_MID; bt_tx_buf[0] = 0xAA; //帧头1 bt_tx_buf[1] = 0x55; //帧头2 bt_tx_buf[2] = (x_raw >> 8) & 0xFF; //X轴高字节 bt_tx_buf[3] = x_raw & 0xFF; //X轴低字节 bt_tx_buf[4] = (y_raw >> 8) & 0xFF; //Y轴高字节 bt_tx_buf[5] = y_raw & 0xFF; //Y轴低字节 //校验位,前6字节累加取低8位进行校验 bt_tx_buf[6] = bt_tx_buf[0]+bt_tx_buf[1]+bt_tx_buf[2]+bt_tx_buf[3]+bt_tx_buf[4]+bt_tx_buf[5]; //串口2阻塞发送 HAL_UART_Transmit(&huart2,bt_tx_buf,7,HAL_MAX_DELAY); HAL_Delay(20); //小延时,避免拥堵

2、从机

变量定义

主函数部分,每接收一字节进入串口回调函数

joy_rx_ok表示接收到完整的一帧且完成数据处理

HAL_UART_Receive_IT(&huart2,&rx_byte,1); //开启串口2接收中断 while (1) { /* USER CODE BEGIN 3 */ if(joy_rx_ok) { joy_rx_ok = 0; //预留空位,用于调用处理好的数据 } HAL_Delay(10); } /* USER CODE END 3 */

串口回调函数,对接收到的每个字节进行处理

/* USER CODE BEGIN 4 */ void HAL_UART_RxCpltCallback(UART_HandleTypeDef*huart) { if(huart->Instance == USART2) { uint8_t d = rx_byte; if(frame_sync == 0) { if(d == 0xAA) frame_sync = 1; } else if(frame_sync == 1) { if(d == 0x55) { frame_sync = 2; frame_idx = 0; } else frame_sync = 0; } else if(frame_sync == 2) { frame_buf[frame_idx++] = d; if(frame_idx >=5) { uint8_t sum = 0xAA + 0x55 + frame_buf[0] + frame_buf[1] + frame_buf[2] + frame_buf[3]; if(sum == frame_buf[4]) { joy_rx_x = ((uint16_t)frame_buf[0] << 8) | frame_buf[1]; joy_rx_y = ((uint16_t)frame_buf[2] << 8) | frame_buf[3]; joy_rx_ok = 1; } frame_sync = 0; } } HAL_UART_Receive_IT(&huart2,&rx_byte,1); } } /* USER CODE END 4 */

三、结语

学无止境,希望每一位读者都能够有所收获,有不足之处也欢迎大家在评论区留言或私信

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 1:59:08

AIGC 内容指纹:生成内容入库前先做可追踪设计

AIGC 内容指纹&#xff1a;生成内容入库前先做可追踪设计 一、生成内容不能只有正文 AIGC 系统把文本、图片或摘要生成出来后&#xff0c;很多团队只保存最终内容。短期看够用&#xff0c;长期看很难治理。内容是谁生成的、基于什么提示词、用了哪个模型、有没有人工编辑、是否…

作者头像 李华
网站建设 2026/7/5 1:58:58

开源 AI 工具文档示例:示例要能复制运行

开源 AI 工具文档示例&#xff1a;示例要能复制运行 一、文档示例决定第一印象 开源 AI 工具的 README 往往决定用户是否继续尝试。很多项目介绍很酷&#xff0c;但示例代码复制下来跑不通&#xff1a;缺少环境变量、版本不匹配、模型 Key 没说明、输出格式和文档不一致。用户不…

作者头像 李华
网站建设 2026/7/5 1:57:48

终极指南:5分钟快速导出QQ空间全部历史说说的完整解决方案

终极指南&#xff1a;5分钟快速导出QQ空间全部历史说说的完整解决方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾经试图找回那些被QQ空间隐藏的青春记忆&#xff1f;那些记…

作者头像 李华
网站建设 2026/7/5 1:54:47

Kubernetes HPA 调参:扩容慢,不一定是副本数太少

Kubernetes HPA 调参&#xff1a;扩容慢&#xff0c;不一定是副本数太少 一、HPA 问题先看指标链路 Kubernetes HPA 用来根据指标自动扩缩容&#xff0c;但线上常见问题是&#xff1a;流量来了副本没及时扩&#xff0c;流量退了副本又迟迟不缩。很多人第一反应是调大最大副本…

作者头像 李华