自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

嵌入式大杂烩

专注于嵌入式技术!

  • 博客(419)
  • 资源 (1)
  • 收藏
  • 关注

原创 嵌入式 C++ 面向对象编程入门

面向对象与面向过程编程的比较可以通过盖房子来理解。面向过程关注具体施工步骤(如何盖),而面向对象则关注房屋组件(门、窗等对象)及其交互。前者侧重流程控制,后者强调对象封装与协作,体现了两种不同的程序设计思想。

2025-09-25 12:30:00 802

原创 2000行代码打造的嵌入式Modbus协议栈!

摘要:Modbus协议在工业自动化和物联网领域广泛应用,但传统协议栈代码量庞大,不适合资源受限的微控制器。GitHub上的nanoMODBUS项目提供了一个轻量级解决方案,通过精简代码实现高效通信,为嵌入式系统开发提供了更优选择。该项目针对8位/16位MCU优化,在保持功能完整性的同时大幅降低资源占用。

2025-09-24 12:00:00 842

原创 嵌入式系统模块间几种通信方式对比

文章摘要: 本文介绍了全局变量的概念及其特性。全局变量是在程序运行期间始终存在的变量,其作用域贯穿整个程序,可以被所有函数和模块访问。这类变量通常存储在内存的全局数据区,具有静态存储期。过度使用全局变量可能导致命名冲突和代码维护困难,因此建议合理控制其使用范围。文章以绿色标题突出主题,采用简洁的技术写作风格,适合编程初学者理解变量作用域的基础知识。

2025-09-23 16:51:05 928

原创 适用于通用MCU和Linux系统的W25QXX全功能驱动

嵌入式系统中常需存储数据(如配置参数、日志),W25QXX系列Flash存储器因其串行接口(SPI/QSPI)占用引脚少、布线简单而广泛应用。该系列容量从1MB到256MB不等,适用于代码存储(支持XIP直接执行)、参数保存等场景。本文将通过分析开源驱动库,解析其实现原理与代码设计。

2025-09-16 21:44:42 866

原创 一个轻量级的按键管理库!

它通过事件驱动的方式,把复杂的按键处理逻辑封装得很好,让我们在使用时只需要关注业务逻辑,而不用纠结于底层的状态机处理。如果你的项目中需要处理按键输入,不妨试试lwbtn,相信它会让你的按键处理代码变得更加优雅和可靠。这种配置方式的好处是,你可以根据具体需求裁剪功能,比如只需要简单的按下/释放事件,就可以关闭点击检测功能,节省内存和CPU资源。lwbtn依赖准确的毫秒时间戳,如果你的系统时间源精度不够,可能会影响按键检测的准确性。今天我们来看看一个按键开源库——lwbtn,看看它是怎么优雅地处理按键管理的。

2025-09-11 10:20:53 730

原创 嵌入式编程模型 | 桥接模式

桥接模式是一种结构型设计模式,通过将抽象与实现分离,使两者可以独立变化。该模式在嵌入式系统中尤其适用于跨平台硬件抽象、多算法实现和设备驱动分层设计。文中以显示设备为例,展示了桥接模式如何通过组合方式(3个显示内容类+3个驱动类)替代继承方式(需要9个类)实现灵活扩展。案例包含UML类图和C语言实现代码,演示了如何构建显示设备抽象层与具体驱动实现的解耦结构,包括LCD、OLED等驱动的具体实现。这种模式显著减少了类数量,提高了系统可维护性和扩展性。

2025-08-31 21:47:13 115

原创 嵌入式编程模型 | 适配器模式

适配器模式是一种结构型设计模式,用于解决接口不兼容问题。它通过创建适配器类将现有接口转换为目标接口,实现不同类的协同工作。在嵌入式系统中,适配器模式特别适用于硬件驱动兼容、协议转换和遗留系统集成等场景。模式结构包含目标接口、适配者、适配器和客户端四个部分。文章通过UART和SPI传感器接口的统一化案例,展示了如何使用C语言实现适配器模式,包括接口定义、适配器创建和具体实现。这种设计使得上层应用可以统一调用不同协议的传感器,显著提高了代码的复用性和扩展性。

2025-08-30 15:00:33 74

原创 嵌入式编程模型 | 原型模式

本文介绍了原型模式在嵌入式传感器网络中的应用。原型模式通过复制现有对象创建新实例,避免了重复初始化开销,适用于设备配置克隆、状态复制等场景。文章以传感器网络为例,展示了原型模式的结构(抽象原型类、具体原型类、客户端)和实现方式,通过C语言代码演示了温度/湿度传感器的克隆过程。该模式能有效提升嵌入式系统资源复用效率,实现快速部署相似配置的传感器节点,同时保持内存优化和配置灵活性。

2025-08-29 15:55:09 61

原创 嵌入式编程模型 | 建造者模式

本文介绍了建造者模式在嵌入式系统中的应用。该模式通过分离复杂对象的构建与表示,实现不同配置的统一创建。核心结构包括产品类、抽象建造者、具体建造者和指挥者。在嵌入式领域尤其适用于设备初始化、硬件抽象和资源配置等场景。文中提供了嵌入式设备配置的框图说明,并展示了C语言实现代码,包括开发板和量产版两种具体建造者的实现。通过建造者模式,可以灵活构建不同配置的嵌入式设备实例,满足多样化的硬件和软件需求。

2025-08-29 10:52:29 41

原创 嵌入式编程模型 | 数据驱动编程

嵌入式开发的核心流程可概括为"获取数据-处理逻辑":从传感器或其他模块获取原始数据,通过算法处理后转化为可直接使用的数据,最终根据业务需求设计功能逻辑。在复杂场景下,该过程可能细分为数据采集、算法处理和业务实现三个阶段,但整体仍遵循这一基本思路。

2025-08-28 10:54:26 173

原创 一个适用于嵌入式领域的轻量级协议库!

LwPKT是一个轻量级开源通信协议库,仅用不到1000行代码就解决了嵌入式设备间可靠通信的难题。该项目针对嵌入式开发中常见的通信痛点,提供了简洁高效的解决方案,特别适合资源受限的嵌入式系统。其设计巧妙,代码精简,能有效处理复杂通信协议问题,是嵌入式开发者的实用工具。

2025-08-19 09:55:21 1117

原创 高效环形缓冲区LwRB解析

LwRB环形缓冲区:嵌入式开发的高效数据管理方案 摘要:LwRB(Lightweight Ring Buffer)是一个轻量级环形缓冲区管理库,专为解决嵌入式开发中的数据流管理问题而设计。它采用环形结构实现高效的数据读写,支持零动态内存分配、线程安全和DMA操作。核心原理基于C11原子操作实现指针管理,通过两阶段读写策略优化性能(线性部分+环绕部分)。相比传统缓冲区,LwRB能持续利用存储空间而无需数据搬移,特别适合串口通信、传感器采集等场景。其内存占用小(仅需5个成员变量)、性能高(使用memcpy优化)

2025-08-15 08:54:04 936

原创 Git 交互式变基修改commit描述

本文介绍了Git中交互式变基(rebase)的使用方法以及如何设置提交校验钩子。通过交互式变基可以修改历史提交信息,具体步骤包括使用git rebase -i命令选择要修改的提交,将pick指令改为reword后重新编辑提交信息。同时,文章还展示了如何设置commit-msg钩子来强制规范提交格式,包括类型前缀、必填字段等校验规则,并提供了Python实现的校验脚本示例。这些技巧能帮助团队保持统一的Git提交规范,提高代码管理效率。

2025-08-11 08:06:32 423

原创 推荐一个嵌入式轻量级事件管理库!

lwevt是一个轻量级嵌入式事件管理库,采用C语言开发,专为资源受限的嵌入式系统设计。该库具有跨平台特性,支持自定义事件类型和数据,提供简洁高效的事件处理机制。核心优势包括:平台独立性、灵活的事件定义、易用性维护性以及MIT开源许可。通过简单的API接口,开发者可以快速构建事件驱动型应用。示例代码展示了如何定义事件处理函数并响应不同类型的事件。项目已在GitHub开源,适用于各类嵌入式操作系统和硬件平台。

2025-08-06 23:18:33 303

原创 bufferevent | 嵌入式网络通信缓冲层

本文深入介绍libevent库中的bufferevent机制,这是一套用于异步网络编程的高级抽象接口。文章首先概述了bufferevent的核心特性,包括自动缓冲区管理、事件驱动机制、超时控制等。然后通过一个TCP客户端实例展示了bufferevent的实际应用,详细解析了数据收发流程。最后深入剖析了bufferevent的源码实现,包括其核心数据结构、水位控制机制以及事件触发流程。文章配有丰富图示,帮助开发者理解这一高效网络编程工具的工作原理和使用方法。

2025-07-10 01:22:45 316

原创 嵌入式编程模型 | 策略模式

策略模式在嵌入式系统中的应用 策略模式是一种行为设计模式,它将算法封装为独立对象,使算法可相互替换。该模式包含三个核心组件:上下文(持有策略对象)、策略接口(定义公共接口)和具体策略(实现算法)。在嵌入式系统中,策略模式适用于通信协议切换、传感器数据处理、电源管理和控制算法等场景。 相比传统实现方式,策略模式具有算法扩展性强、消除条件分支、提高代码复用率、支持运行时动态切换策略等优势。文中以传感器数据处理为例,展示了通过策略接口统一温度/湿度传感器的不同处理逻辑,实现算法与使用场景的解耦。这种设计模式特别适

2025-07-09 13:49:26 58

原创 一款专为嵌入式系统设计的开源HTTP库!

libevhtp是一款专为嵌入式系统设计的轻量级HTTP库,基于libevent开发,具有高性能和低资源占用的特点。该库采用C语言编写,支持事件驱动、零拷贝设计、RESTful路由和HTTPS加密通信。相比Nginx等传统服务器,libevhtp编译后仅数百KB,内存占用小于1MB,启动时间达到毫秒级,非常适合资源受限的物联网设备。文章详细介绍了libevhtp的核心特性、优缺点对比,并提供了安装部署指南和简易HTTP服务器的代码示例,展示了其在嵌入式Linux环境下的实际应用。

2025-07-04 09:52:34 572

原创 嵌入式开发必备:开源事件驱动库 libevent

libevent是一个开源的、轻量级的跨平台事件驱动库:Github仓库地址:https://github.com/libevent/libeventlibevent/├── event.c # 事件核心逻辑├── epoll.c # Linux epoll 后端实现├── kqueue.c # BSD kqueue 后端实现├── select.c # 通用 select 后端实现├── bufferevent.c # 缓冲区事件处理├── evhttp.c # HTTP 协议处理。

2025-07-04 01:04:04 395

原创 嵌入式编程模型 | 命令模式

命令模式在嵌入式系统中的应用:将操作封装为对象以支持撤销功能 命令模式是一种行为设计模式,通过将请求封装为独立对象来实现参数化操作。在嵌入式系统中,该模式可以用于配置管理,如亮度、音量和温度参数的设置与撤销。 核心组件: Command接口:定义execute和undo方法 具体命令(如ResetConfigCommand):保存接收者状态并实现业务逻辑 接收者(SystemConfig):存储实际配置数据 调用者:管理命令历史记录,支持执行和撤销操作 优势: 解耦请求发送者和接收者 支持撤销/重做功能 便

2025-07-02 00:49:40 47

原创 嵌入式编程模型 | 单例模式

摘要 单例模式确保类仅有一个实例并提供全局访问点,适用于嵌入式系统中的全局状态管理、硬件外设控制和资源池等场景。核心实现包括:私有静态实例、私有构造函数和公共静态访问方法。嵌入式设计中需考虑线程安全(如使用互斥锁)和避免动态内存分配。案例展示了一个远程监控系统通过单例模式维护中央控制台,确保各模块状态一致。C语言实现采用静态变量和互斥锁,C++则利用静态成员和互斥量。该模式有效解决了分布式状态管理问题,在资源受限的嵌入式系统中尤为重要。 (字数:150)

2025-06-25 10:52:27 72

原创 嵌入式编程模型 | 抽象工厂模式

(The Open/Closed Principle, OCP) :软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的。即简单工厂模式加上第1点的抽象工厂这个要点就构成了抽象工厂模式。在需要高兼容性的嵌入式系统中,抽象工厂模式能显著降低多平台适配成本,确保硬件组件间的兼容性,具体工厂(Concrete Factory):实现抽象工厂的方法,创建具体产品。抽象工厂模式适用于需要创建多个相关产品的系统。具体产品(Concrete Product):实现抽象产品接口,定义具体产品。

2025-06-18 02:16:46 52

原创 嵌入式编程模型 | 简单工厂模式

本文介绍了简单工厂模式在嵌入式系统中的应用。通过LCD驱动实例展示了该模式的实现方式:工厂类根据参数创建具体产品实例,抽象产品接口统一操作方法。该模式适用于硬件驱动兼容、资源受限等场景,能有效解耦创建与使用过程。C和C++代码示例演示了多型号LCD驱动的统一管理。优点包括接口统一、便于扩展,但也存在违反开闭原则、工厂职责过重等缺点。最后总结了该模式在硬件兼容、算法选择和跨平台适配等嵌入式场景的适用性。

2025-06-17 19:16:34 80

原创 嵌入式必备工具 CMake 的使用套路!

各司其职,这种 “分而治之” 的思想是嵌入式项目管理的精髓。:将头文件路径暴露给依赖它的模块,确保其他代码能调用库函数。让 CMake 自动扫描子目录的配置文件,简化顶层逻辑。实际部署时,需确保库文件在系统库路径中,否则运行会报错。:一套配置文件,适配 ARM、x86 等多种架构。:轻松分离驱动层、库和应用程序,代码结构一目了然。选项:生成独立的动态链接库,可被多个程序复用。:创建静态库,代码将直接嵌入可执行文件。将静态库、动态库与主程序绑定。3. 库模块:静态库、动态库。

2025-05-23 10:29:42 391

原创 嵌入式设备配网:从基础到实战!

其原理是嵌入式设备自身创建一个无线热点,用户通过手机或其他终端设备连接到这个热点,然后在终端设备上输入目标网络(如家庭 WiFi)的信息,设备接收到这些信息后,就会尝试连接到目标网络。smartconfig配网的原理是利用手机等终端设备将网络信息(SSID 和密码等信息)通过广播的方式发送出去,嵌入式设备通过监听周围的无线信号,解析出网络信息,从而实现配网。• 无线 AP(Access Point):无线接入点,是一种无线网络设备,用于将无线客户端连接到有线网络,起到桥梁的作用。

2025-05-11 21:47:39 204

原创 嵌入式设备联网的 “捷径” ——DHCP 详解

DHCP 服务器收到传感器的 Request 包后,会发送一个 Ack 包给传感器,相当于回应:“好的,这个 IP 地址归你用了,配置信息确认无误。” 这个 Request 包同样是广播包,目的是通知网络中的其他 DHCP 服务器,自己已选定 IP 地址,其他服务器可收回它们提供的地址。工厂网络中的 DHCP 服务器收到传感器的 Discover 包后,会从预先设定的 IP 地址池中挑选一个尚未分配的 IP 地址,然后向传感器发送一个 Offer 包。简单来说,DHCP 就像网络世界里的 “贴心管家”。

2025-04-22 09:01:25 630

原创 嵌入式软件:函数式 VS 非函数式编程

例如,在一个嵌入式控制系统中,使用命令式编程可能会有大量的循环和条件判断来实现不同的控制逻辑,代码的整体结构不够清晰。非函数式编程中存在大量的共享状态和副作用,测试时需要模拟复杂的外部环境和状态,增加了测试的难度和复杂度。代码的可维护性和可测试性较差,因为函数之间的依赖关系不清晰,修改一个函数可能影响其他函数。代码结构通常围绕函数的组合和复用构建,函数之间的依赖关系清晰,每个函数只负责单一的任务。,它将计算视为函数的求值,避免使用共享状态和可变数据,强调函数的纯粹性和不可变性。

2025-04-20 12:17:40 152

原创 嵌入式领域:Linux 与 RTOS 的多方面对比!

它实现的方式,是将核心功能模块化,划分成几个独立的进程,各自运行,这些进程被称为服务(service)。:秒级启动,启动过程涉及U-Boot引导、内核加载、文件系统挂载、服务启动等多个环节,启动速度相对较慢,一般需要几秒到几十秒的时间,不过对于一些非实时性要求高的设备,如智能电视等,启动速度的影响相对较小。:因内核复杂,需要持续运行多个后台进程和服务,对硬件资源的使用相对较多,运行功耗一般较高(通常>100mW),但通过一些节能技术和优化措施,如电源管理框架(如CPUFreq),也可在一定程度上降低功耗,

2025-04-16 09:47:01 823

原创 嵌入式性能指标竟藏着这些秘密,你了解几个?

在应用程序使用C或C++堆、多个自定义堆或RTOS提供的内存池对象,可以使用heap-monitoring跟踪这些对象的使用情况,分析它们的使用模式,评估堆上的负载、识别潜在的内存泄漏、跟踪内存峰值使用情况等的格式显示收集到的信息。Valgrind Massif能帮助我们减少内存的使用,在带有虚拟内存的现代系统中,它还能够加速我们程序的运行,减少程序停留在交换区中的几率。对于嵌入式开发,可以在交叉编译环境中使用。合理的资源利用率可以使系统在有限的硬件资源下稳定运行,并为未来的功能扩展预留一定的资源空间。

2025-04-13 14:07:43 966

原创 ESP32、ESP8266学习资料推荐!

实现了 ESP32-IDF 3.1 的 DNS 服务器功能,还能返回 HTML 页面,在网络配置和服务提供方面有着重要的应用。这两个仓库由 xuhongv 精心打造,仓库里涵盖了很多个demo,从基础的硬件驱动到复杂的网络应用,涵盖。无论你是刚入门的小白,还是想进阶实战的老司机,这两个仓库都能让你快速上手ESP32与ESP8266开发,实现了将相机拍摄的照片通过 HTTP 上传到云端的功能,在图像监控和数据存储方面有很大的价值。网络通信是 ESP32 的强项,仓库里相关的例子非常丰富。

2025-04-09 22:28:12 339

原创 嵌入式工程师进阶指南:从「会用」到「会设计」的五大突破方向

TI在《低功耗设计白皮书》中指出,软件策略对系统功耗的影响占比可达40%以上,需从代码效率、任务调度和硬件协同三个维度展开深度优化。程克非在《嵌入式系统设计》中指出,系统级优化是提升嵌入式软件竞争力的关键,需从代码效率、资源利用率和实时性三个维度展开。,掌握动态电压频率调节(DVFS)、睡眠模式优化、外设动态管理及RTOS功耗调度技术,实现嵌入式软件的能效跃升。例如:工业控制系统中,将Modbus协议栈封装在中间层,实现与硬件无关的通信逻辑。:将频繁访问的变量存储在栈中,减少Cache Miss。

2025-04-05 12:31:17 1361

原创 推荐一款便于学习的开源蓝牙协议栈!

bluetooth_stack专注于嵌入式平台(如STM32),其代码结构精简高效,支持HCI层以上的核心协议(如L2CAP、ATT、GATT等),而底层依赖芯片自带协议栈(如CSR8311)。目前包含HCI、L2CAP、SDP、RFCOMM、HFP、SPP、A2DP、AVRCP、AVDTP、AVCTP、OBEX、PBAP等协议。btstack一个包含传统蓝牙跟低功耗蓝牙的协议栈,属于超轻量级蓝牙协议栈,用作学习蓝牙协议栈的人使用。本次我们来介绍一个开源的双模蓝牙协议栈——btstack。

2025-04-03 09:37:13 1096

原创 嵌入式软件,有必要进行自测吗?

有时候,我们也会供给我们的团队成员调用,或是其他部门的同事使用,我们在交付出去进行联调之前,需要保证质量,也能免去后面很多的联调成本。设计的软件可测试性强,我们就能在开发阶段进行充分地测试,在开发阶段尽可能多地解决一些逻辑上的问题,从而保证更高质量地软件交付。方式二,计算所依赖的数据都通过函数参数留出来了,我们可以很方便地对函数进行测试,可以很方便地输入不同的数据组合。所以,我们尽可能地在释放给测试之前,进行一个完整的自测,减少一些不必要的bug产生(主路径bug)。并且自测的思考放在设计之前。

2025-04-01 09:42:15 661

原创 【开源硬件新玩法】打造属于你的 AI 聊天伴侣

集成了大模型 TTS(火山引擎或 CosyVoice)和大模型 LLM(Qwen, DeepSeek, Doubao),拥有可配置的提示词和音色,还具备短期记忆功能,每轮对话后能自我总结,让对话更加连贯和智能。:BOOT 键唤醒和打断,支持点击和长按两种触发方式,还具备离线语音唤醒 ESP - SR 功能,操作简单又高效,能实时打断对话,就像和真人聊天一样自然。:OLED/LCD 显示屏不仅能显示信号强弱,还能展示对话内容,甚至支持 LCD 显示图片表情,为你的聊天增添更多乐趣。

2025-03-28 22:17:07 2947

原创 44 岁嵌入式软件工程师失业记:职场沉浮中的思考

一些刚入行的工程师,虽然需求是做出来了,但是可能也会搞出很多bug,甚至修了一个bug,引发了几个bug~在这个快速发展的时代,无论是年轻的嵌入式软件工程师,还是像梧桐这样有丰富经验的从业者,我们都需要保持学习的热情和对行业的敏锐洞察力。项目紧张时,我们也常态干到晚上11点之后,甚至凌晨。从集群通信到医疗设备,再到物联网、半导体,她参与过各种项目,能熟练用汇编写驱动,熟悉各类开发流程,还凭借努力晋升为软件架构师。随着行业竞争的加剧,企业对工程师的要求越来越高,不仅要技术过硬,还要对多个领域有深入了解。

2025-03-27 08:17:44 469 1

原创 嵌入式开发中常用的软件工程方法有哪些?

/ 或触发错误// 处理-2147483648 / -1溢出return;

2025-03-25 10:21:22 1030

原创 嵌入式开发:这几个知识点让你少走 3 年弯路!

堆栈水印检测是一种动态监测任务堆栈使用情况的技术。在任务初始化时,将整个堆栈空间填充特定的标识模式(如0xDEADBEEF随着任务运行,堆栈指针逐渐覆盖这些预设值。通过定期检查未被覆盖的残留标识位置,可精确计算堆栈的历史最大使用量。相较于静态代码分析,该方法能真实反映中断嵌套、递归调用等动态行为的影响。标识模式需避免与正常数据冲突;检测时机应选在任务空闲或切换时,避免干扰实时性。**浅拷贝(Shallow Copy)**仅复制对象本身的值(指针变量的值),不复制指针指向的实际数据。

2025-03-20 10:21:18 399

原创 嵌入式开发:几个小众高效工具!

之后又重新自研,不仅支持 C/C++,还支持 C#,Lua 语言,在发掘 C/C++ 空指针、越界、未初始化、C#空引用、Lua变量未初始化等比较有效。Quantum Platform for C(QP/C)是嵌入式系统领域的实时框架,由 Quantum Leaps 公司开发,基于状态机和事件驱动架构(EDA)。可应用于IoT 设备、智能硬件、工业物联网(IIoT),支持多平台(如 ESP32、STM32),降低现场故障排查成本。Armadillo是一款轻量级代码混淆工具,支持C/C++代码混淆。

2025-03-18 09:50:27 756

原创 观察者模式在嵌入式中的妙用:传感器、RTOS、MQTT实例解析

*观察者模式(Observer Pattern)**是一种行为设计模式,其核心在于建立对象间的动态订阅-通知机制。它定义了对象之间的一对多依赖关系,当一个对象(被观察对象,也称为主题)的状态发生变化时,所有依赖它的对象(观察者)都会收到通知并自动更新。处理传感器数据更新硬件状态变化多模块协作。

2025-03-15 11:17:01 964

原创 嵌入式开发必备技能 | Git子模块

大家好,我是杂烩君。今天我们来分享Git子模块()的小知识。

2025-03-13 09:36:21 416

原创 嵌入式编程模型 | MVC模型

MVC(Model-View-Controller)是一种软件设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),这种分离有助于提高代码的可维护性、可扩展性和可测试性。模型(Model):专注于数据管理和业务逻辑。视图(View):负责呈现数据给用户,它是用户界面的部分。控制器(Controller):作为模型和视图之间的桥梁,接收用户的输入请求,根据请求调用相应的模型方法进行数据处理,然后选择合适的视图将处理结果展示给用户。

2025-03-10 22:39:53 1027

嵌入式LCD模拟器及其使用方法

在没有硬件LCD时,可以借助LCD模拟器来编写软件UI界面。

2023-06-07

JSON天气数据包解析

本程序使用cJSON库对心知天气的JSON数据包进行解析,可以方便的移植到STM32等单片机平台上,再配合WIFI或者其他通信模块即可做成个简易的天气预报系统。

2018-02-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除