logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【Hi3861 物联网实战】MQTT 心跳保活详解:设备为什么连上几十秒就 “假死“,PINGREQ/PINGRESP、自动重连一次讲清

Hi3861智能家居项目中,设备连上MQTT后偶发“假死”——能收初始指令但后续无响应。根因是未实现心跳保活:MQTT Broker在90秒内未收报文即断连,而设备不知情。解决方案:每30秒发送PINGREQ并等待PINGRESP,成功则连接正常,失败则累计重连。关键点:心跳≠定时重连,需基于应答判断;主循环中以空转次数(≈15秒/次)计时,避免阻塞;重连仅关闭TCP、重建连接并重新订阅,不重复初

文章图片
#嵌入式硬件#c语言#单片机
【Hi3861 物联网实战】MQTT 通信从入门到踩坑:连接、收发、心跳、重连、I2C 卡死全记录

本文基于 Hi3861(HarmonyOS LiteOS)智能家居项目实战,完整记录 MQTT 通信从 0 到稳定收发的踩坑全过程:Broker 选择与 MQTTX 配置、Topic 匹配、cJSON 指令解析、无心跳被踢下线、PINGREQ 保活、断线自动重连、AT+CIPSTART 超时、I2C 等不到 ACK 卡死等问题,每个坑都附真实串口日志、原因分析和可直接复用的代码。

文章图片
#stm32#c语言#嵌入式硬件 +1
MPU6050 姿态检测详解|互补滤波原理、数据平滑优化、水平仪功能实现

本文介绍了STM32通过I2C通信驱动MPU6050六轴传感器的实现方法。主要内容包括:1) I2C通信模块的底层配置,使用PB10(SCL)和PB11(SDA)引脚实现起始/终止信号、数据收发等功能;2) MPU6050驱动开发,包含寄存器初始化、数据读取等操作,重点讲解了加速度计和陀螺仪数据的获取;3) 姿态解算算法实现,结合陀螺仪积分和加速度计反三角函数计算,采用互补滤波融合数据;4) 水平

文章图片
#单片机#嵌入式硬件
基于STM32+OLED 手搓一个谷歌小恐龙跳跃游戏,含完整碰撞检测原理

这篇文章分享了基于STM32F103C8T6和0.96寸OLED实现的谷歌恐龙跳跃游戏开发经验。作者详细介绍了游戏的核心架构,包括:1)采用AABB矩形碰撞检测算法替代像素级检测;2)通过正弦函数模拟自然跳跃轨迹;3)分层滚动背景实现视觉纵深感(地面快、云朵慢);4)模块化设计思路(坐标结构体、画面绘制、游戏逻辑、碰撞检测)。文章重点解析了AABB碰撞原理(通过判断四个边界条件)和游戏循环范式(清

文章图片
#stm32#游戏#嵌入式硬件
【STM32 智能手表源码剖析 02】OLED 菜单系统 + 主页 UI + 时间设置|从 0 写通用菜单框架 + 定时器

本文详细解析了智能手表项目中菜单系统和通用定时器的实现方法。核心内容包括: 采用1ms定时器中断作为系统心跳,解决了纯轮询方式导致的按键延迟、秒表不准等问题,实现精确计时和流畅交互 构建了通用菜单框架: 使用结构体数组定义菜单项 实现左右滑动动画效果 通过标志位管理菜单状态 提供万能菜单模板 详细讲解了关键功能实现: 页面跳转流程 时间设置页面 按键消抖(20ms检测) 长按检测(1s阈值) 秒表

文章图片
#stm32#嵌入式硬件
STM32F103烧录失败?MicroLIB一招解决

摘要:本文分享了在STM32F103C8T6上开发智能手表版谷歌小恐龙游戏时遇到的烧录问题及解决方案。作者编译成功的游戏代码始终出现"FlashTimeout"错误,经排查硬件连接、下载配置等常规方法无效后,最终通过勾选Keil中的"Use MicroLIB"选项成功解决。文章深入分析了问题根源:标准C库初始化耗时过长导致烧录超时,而MicroLIB作为精简

文章图片
#单片机#嵌入式硬件#stm32
STM32常见外设模板(标准库)

EXTI与TIM都用NVIC传导中断信号不同的是:EXTI是外部中断,TIM为内部中断。

文章图片
#单片机#嵌入式硬件#stm32 +1
到底了