
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
通过前两篇的学习,我们已经实现了C语言MQTT客户端的基础连接、发布/订阅功能,完成了两个客户端的互发目标。但实际开发中,基础版本还有很多不足:比如阻塞接收会导致程序卡死、无法适配公司带认证的MQTT服务器、出现问题无法快速定位进程等。本文核心目标:掌握两种非阻塞接收方式(fcntl、epoll),适配公司MQTT服务器的账号密码认证,学会用ss、ps命令查看MQTT相关进程,解决实际开发中的常见
主题匹配原则:发布端和接收端的主题必须完全一致(大小写敏感),比如“test”和“Test”是两个不同主题,会导致接收失败。报文剩余长度计算:这是新手最容易踩的坑,剩余长度=可变头部+有效载荷的总长度,手动计算时务必核对,建议用动态计算方式(如可变有效载荷版本),避免手动写错。客户端ID唯一性:两个客户端的client ID不能相同,否则会导致其中一个客户端被服务器强制断开连接(示例中用pub_0
最近开始深耕TCP/IP相关开发,给自己定了个具体目标:用C语言写MQTT程序,实现两个客户端互发消息——A客户端发布消息到/test主题,B客户端能成功接收。作为MQTT初学者,踩了不少二进制报文拼接、TCP连接的坑,整理了这份入门笔记,帮和我一样的新手快速上手,跳过无效摸索,重点吃透核心规则,快速跑通最简Demo。本文核心目标:掌握MQTT入门必备规则、C语言前置技能,成功用C语言实现MQTT
设计思想:多任务独立 + 高效调度 = 并发。任务本质:无限循环的函数,是调度的基本单元。任务独立:通过MSP/PSP双栈机制,实现任务栈空间的隔离。高效调度:基于优先级的抢占式调度,保证实时性。内核管理:通过TCB数据结构,管理所有任务的状态和信息。希望这篇文章能帮助你从本质上理解FreeRTOS,在开发中更加游刃有余。你在使用FreeRTOS时还遇到过哪些底层原理相关的困惑?欢迎在评论区留言交
本文深入解析STM32F407的GPIO架构及应用,主要涵盖:1)底层架构原理,包括总线连接、寄存器机制和存储映射;2)GPIO功能详解,分析8种工作模式及硬件结构;3)实战配置方法,展示寄存器直接操作、标准库和HAL库三种实现方式;4)进阶应用,介绍中断和DMA功能实现;5)常见问题与优化建议。文章从理论到实践系统梳理了GPIO开发要点,为嵌入式开发者提供了全面的技术指南和工程实践参考。
本文系统阐述了进程控制的核心机制。首先介绍了进程地址空间的组成,包括代码段、数据段、堆和栈等关键区域的功能特性。其次详细解析了系统调用的层级架构和设计原理,强调了其安全性和抽象价值。重点讨论了进程创建(fork)与写时拷贝技术、进程退出(exit)与资源清理、进程等待(wait)与僵尸进程避免等关键操作。最后阐述了进程替换(exec)的功能特点及其常见应用场景。全文揭示了进程生命周期管理的核心技术









