news 2026/8/29 5:38:46

嵌入式软件知识点自存

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
嵌入式软件知识点自存

I2C时序

空闲:SCL=1,SDA=1

起始:SCL=1,SDA 高→低

停止:SCL=1,SDA 低→高

数据传输:SCL 高,采样 SDA,SDA 不能变化;SCL 低,SDA 允许改变电平。SDA 高 = 1,SDA 低 = 0。

ACK:接收方拉低 SDA;NACK:SDA 保持高电平。

volatile关键字的作用

禁止编译器把变量缓存到寄存器,强制每次读写访问真实内存,消除读写优化。

三大适用场景:

  1. 外部硬件状态寄存器(内存映射外设)
  2. 中断处理函数与主程序共享全局标志
  3. 裸机 RTOS 多任务 / 多线程共享标志位

MQTT

概念

基于TCP的轻量级、发布订阅消息协议,客户端-broker代理-客户端架构。

特点

开销小、带宽占用低,适合弱网设备。

三个角色

Publisher发布者(发消息)、Broker代理服务器(接收、转发信息)、Subscriber订阅者(接收信息)

topic主题

层级用/分割,单层通配符+(例:school/+/teacher),多层通配符#(例:school/#)

QoS服务质量

发布者与Broker之间、Broker与订阅者之间分别协商,两端取最小值。

QoS0最多一次,消息发出去就不管,不重传,可能丢包,适合不重要传感器上报。

QoS1至少一次,保证消息一定到达,可能重复。PUBLISH->PUBACK。

QoS2恰好一次,四次握手PUBLISH PUBREC PUBREL PUBCOMP,开销最大,保证不丢不重复

重要报文

  1. CONNECT:客户端连接 Broker
  2. CONNACK:Broker 回复连接结果(返回码非常重要:0 成功,1 协议不支持,2 身份拒绝等)
  3. PUBLISH:发布消息
  4. SUBSCRIBE/SUBACK:订阅主题
  5. UNSUBSCRIBE/UNSUBACK:取消订阅
  6. PINGREQ / PINGRESP:心跳保活!

保留消息

发布消息设置retain=1,Broker保存这条消息;新订阅该主题的客户端上线立即收到该最新消息。

使用场景:设备最新状态上线。

清楚保留消息:发布一条retain=1,payload为空的消息。

遗嘱消息

客户端在CONNECT报文中提前注册好遗嘱,当客户端异常断开,Broker自动向对应主题发送遗嘱消息。

端口

1883:MQTT明文

8883:MQTT+TLS加密

HTTP

概念

超文本传输协议,应用层协议,请求-应答模式:客户端发起请求,服务端返回响应,服务端不能主动推消息给客户端。

端口

HTTP80 HTTPS443

报文结构

请求报文:请求行(请求方法、请求URI、HTTP版本)、请求头(属性名:属性值)、空行、请求体

响应报文:状态行(HTTP版本、状态码、状态描述)、响应头、空行、响应体(实际返回的数据)

常用请求方法

  • GET:获取资源,参数放 URL;不应该修改服务器数据。
  • POST:提交数据,数据放在 body,新增操作。
  • PUT:全量更新资源。
  • DELETE:删除资源。
  • PATCH:局部修改资源。

状态码

  • 1xx 信息:100 继续
  • 2xx 成功200 OK 成功;201 Created 创建成功
  • 3xx 重定向301 永久重定向;302 临时重定向;304 Not Modified 协商缓存(资源没有变化,返回缓存)
  • 4xx 客户端错误400 参数错误;401 未认证;403 没有权限;404 资源找不到;405 方法不允许
  • 5xx 服务端错误500 服务器内部错误;502 网关错误;503 服务不可用

长连接区别

HTTP Keep-Alive:同一个tcp连接可以连续发多次http请求响应,不用每次请求建立tcp三次握手。

MQTT长连接:依靠心跳保活,broker可以随时主动推送消息给客户端。

缓存机制

强缓存:浏览器看本地缓存是否过期,不发请求到服务器,直接用本地缓存。

协商缓存:发送请求给服务器,服务器判断资源有没有修改,没有返回304,使用本地缓存。

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

数学建模竞赛实战指南:从模型构建到算法求解的完整流程解析

简介:本资源是2026年第十六届MathorCup数学应用挑战赛(俗称“妈妈杯”)B题的全流程参赛解决方案,面向高校数学建模初学者、备赛团队及科研实践者,聚焦企业实际问题建模与求解,助力高效完成赛题理解、模型构…

作者头像 李华
网站建设 2026/8/29 5:36:40

AI蛋白质结构“缩小射线”:原理、部署与批量处理指南

最近科学新闻里有一个项目名字很抓眼球:基于 AI 的蛋白质"缩小射线"(A shrink ray for proteins)。字面意思是把蛋白质变小的程序。很多搞 AI 应用开发的人第一反应是图像超分、体积压缩这类工具,但实际上它属于计算生物…

作者头像 李华
网站建设 2026/8/29 5:36:35

432道MySQL面试题 61 - 80 题

为方便阅读,这里整理了整个系列的索引导航。本系列共 432 道 MySQL 面试题,按每 20 题为一篇进行连载,点击下方链接即可跳转到对应章节,方便你按需查阅、系统复习。 432道MySQL面试题 1 - 20 题 432道MySQL面试题 21 - 40 题 432道MySQL面试题 41 - 60 题 432道MySQL面试题…

作者头像 李华
网站建设 2026/8/29 5:34:43

Python长教程怎么学?把648集当知识地图而非追剧清单

先别急着定“每天必须看五集”的计划。很多人第一次看到“北京大学Python全套教程、648集、198小时”这类标题时,第一反应就是收藏、存网盘、列学习计划,然后从第一集开始看。可现实往往是:一个月后还停在变量和数据类型,或者跳着…

作者头像 李华
网站建设 2026/8/29 5:33:01

Java内推笔试复盘:从冒泡排序到JVM基础考点解析

对于Java工程师的内推笔试,很多人的第一反应是去翻面经、背题,但真正参加过的人会告诉你,笔试和面试是两个完全不同的游戏。2016年360的内推笔试题放到今天来看,技术栈和框架层面已经发生过好几轮更替,但基础题型的考察…

作者头像 李华
网站建设 2026/8/29 5:31:53

Keil uVision2 C51版详解:从安装配置到工程实战与报错排查

简介:嵌入式开发中,单片机工具链的选择直接影响开发效率。Keil C51作为8051内核单片机的主流集成开发环境,其经典版本uVision2凭借轻量、快速、稳定的特点,至今仍在教学和工业场景中广泛使用。本文从工具链的基本概念出发&#xf…

作者头像 李华