当前位置: 首页 > news >正文

STM32 CubeIDE 使用蓝牙模块实现手机控制LED灯

开启UART3异步模式,配置波特率9600。

开启USART3中断,添加DMA 通道。

将蓝牙模块连接到开发板上注意引脚对应

数据回显

if(huart == &huart3){ HAL_UART_Transmit_DMA(&huart3, receiveData, Size); } 当确认是串口3的回调事件后,立即通过DMA将接收到的数据原封不动发回

帧头与长度校验

if(receiveData[0] == 0xAA){ if(receiveData[1] == Size){ 协议约定帧头为 0xAA ,并通过 receiveData[1] 存储的预期长度,和实际接收长度 Size 做比对。

和校验验证

uint8_t sum = 0; for(int i = 0; i < Size - 1; i++){ sum += receiveData[i]; } if(sum == receiveData[Size-1]){ 计算除最后一个字节外所有数据的累加和,再与最后一个字节(校验位)比对。

LED控制

for(int i=2; i<Size-1; i+=2){ GPIO_PinState state = GPIO_PIN_SET; if(receiveData[i+1] == 0x00){ state = GPIO_PIN_RESET; } if(receiveData[i] == 0x01){ HAL_GPIO_WritePin(LED_RED_GPIO_Port, LED_RED_Pin, state); }else if(receiveData[i] == 0x02){ HAL_GPIO_WritePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin, state); }else if(receiveData[i] == 0x03){ HAL_GPIO_WritePin(LED_BLUE_GPIO_Port, LED_BLUE_Pin, state); } } ( receiveData[i] ):指定LED通道( 0x01 =红、 0x02 =绿、 0x03 =蓝)。 ( receiveData[i+1] ):指定LED状态( 0x00 =熄灭、非0=点亮)。 这种“通道+状态”的指令格式,支持同时控制多个LED。
HAL_UARTEx_ReceiveToIdle_DMA(&huart3, receiveData, sizeof(receiveData)); HAL_DMA_DISABLE_IT(&hdma_usart3_rx, DMA_IT_HT); 重新开启下一轮的空闲帧DMA接收,保证串口通信的连续性。 关闭DMA的半传输中断( DMA_IT_HT ),避免半满时触发不必要的中断,仅保留空闲中断触发回调。

http://www.jsqmd.com/news/280466/

相关文章:

  • 查重去 AI 双保险!宏智树 AI:让论文告别 “标红焦虑” 的智能优化神器
  • 【大数据毕设源码分享】基于python的时尚女装抖音号评论数据分析系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 【大数据毕设全套源码+文档】基于python的爬虫与文本挖掘的网络舆情监控系统设计与实现(丰富项目+远程调试+讲解+定制)
  • AI应用架构师避坑:量子计算与AI协同中的资源竞争问题
  • 为什么说“ChatGPT的思考、判断、归纳、回答最具有人类智慧特征”?Why Is It Said “ChatGPT the Most Human-Like Wisdom Traits“?
  • Ivan Zhao | 蒸汽、钢铁与无限心智
  • 学术写作新选择:6个AI优化平台评测,智能润色改善论文逻辑与流畅性
  • python: excel 两个工作表中的员工比对
  • [DASCTF Oct X 吉林工师 欢迎来到魔法世界~]《魔法少女雪殇——光与暗的对决》——剧场版的一些思路
  • MySQL与openGauss不兼容点对比表
  • 【大数据毕设源码分享】基于Python的热门微博数据可视化分析(程序+文档+代码讲解+一条龙定制)
  • 【AI+教育】生成式AI赋能教育研究与写作
  • 基于stm32单片机的智能家居控制系统
  • 论文语言优化指南:通过6款AI工具实现自动化、高精准度的学术润色
  • 【车载audio开发】【Qualcomm PAL 详解 6】【PAL 总体架构与模块交互指南】
  • DBeaver 使用笔记
  • 2026最新强韧柔顺洗发水国货品牌top5推荐!国内优质洗发水企业权威榜单发布,科学护发方案助力解决多重头皮困扰
  • AI学术工具全面测评:6款高效平台实现论文自动润色与表达优化
  • `Dataset` 类中 `__len__` 和 `__getitem__` 方法的具体作用
  • idea同时启动application,启用不同端口
  • 基于stm32单片机的智能行李箱系统
  • 【好物推荐】高效文件分享神器!草料二维码让资料传递告别繁琐
  • 基于STM32单片机的智能路灯系统
  • 论文写作利器:6款AI驱动平台对比评测,智能润色让语言更专业
  • 基于stm32单片机的智能台灯系统
  • LLM实时解析饮食日记,糖尿病管理更精准
  • AI论文助手Top8:横向对比平台写作质量与降重效率,便捷化操作体验
  • vue3 setup插件 vite-plugin-vue-setup-extend
  • AI学术优化工具盘点:6个平台实测,自动改写功能提升论文可读性
  • 基于stm32单片机的智能宿舍管理系统