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

ST7565SPI嵌入式LCD驱动库:轻量、可移植、零内存分配

1. ST7565SPI 驱动库概述ST7565 是 Sitronix 公司推出的单芯片图形点阵 LCD 控制器广泛应用于工业人机界面、便携式仪器仪表、智能穿戴设备等对功耗、成本与显示质量有综合要求的嵌入式场景。其典型分辨率为 128×64 像素内置 128×64 bit 显示 RAMDDRAM支持 1/65 占空比、1/9 偏压驱动兼容多种 LCD 面板如 FSTN、HTN、STN并支持反显、全屏翻转、睡眠模式等关键显示控制功能。ST7565SPI是一个轻量级、可移植的 C 语言驱动库专为通过标准四线 SPISCLK、MOSI、CS、A0/DC接口驱动 ST7565 控制器而设计。该库不依赖特定 HAL 层或 RTOS仅需用户提供底层 SPI 发送函数与 GPIO 控制函数即可完成初始化、绘图、文本渲染及显示控制全流程。其核心设计目标是零动态内存分配、无阻塞时序依赖、可预测执行时间、便于集成至裸机或实时系统。与常见的 ST7565 驱动如 Adafruit_ST7565 或 u8g2 中的 ST7565 后端相比ST7565SPI的工程化特征尤为突出无状态机封装不维护内部状态机所有命令/数据发送均由用户显式触发避免隐式状态切换导致的时序异常纯函数式接口所有 API 均为void或bool返回类型无错误码枚举符合裸机环境对确定性行为的要求位操作粒度可控提供st7565_write_cmd()单字节命令、st7565_write_data()单字节数据、st7565_write_data_block()多字节数据块三级接口适配不同性能需求硬件抽象层解耦通过st7565_hal_t结构体注入底层操作函数天然支持 STM32 HAL/LL、NXP SDK、ESP-IDF、RISC-V Baremetal 等多种平台。该库适用于资源受限的 Cortex-M0/M3/M4、ESP32、nRF52、GD32 等主流 MCU 平台实测在 STM32F030F4P616MHz上以 2MHz SPI 速率完成整屏刷新128×64 1024 字节耗时约 6.8ms满足多数工业 HMI 的实时响应需求。2. 硬件连接与电气特性2.1 标准四线 SPI 连接方式ST7565 支持两种 SPI 模式三线制共享 MOSI/SCLK/CSA0 复用为数据/命令选择与四线制独立 A0 引脚。ST7565SPI库默认采用四线制因其时序更清晰、抗干扰能力更强且无需软件模拟引脚复用逻辑。标准连接关系如下表所示ST7565 引脚功能说明MCU 连接建议电气要求VDD逻辑电源3.3V3.3V LDO 输出±5% 容差纹波 50mVVSS地MCU GND与 MCU 共地低阻抗路径VOUT电荷泵输出悬空内部升压启用接 10μF 陶瓷电容至 VSSV0对比度调节接 10kΩ 可调电阻电压范围-10V ~ 0VCS片选低有效任意 GPIO推挽下拉电阻 10kΩ防误触发A0/DC数据/命令选择任意 GPIO推挽高电平数据低电平命令SCLKSPI 时钟MCU SPI SCLK最高 10MHz推荐 ≤4MHzSDIN/MOSI串行数据输入MCU SPI MOSI与 SCLK 同相CPOL0, CPHA0LED背光控制PWM GPIO 或开关管电流限制电阻 ≥100Ω⚠️ 关键注意ST7565 的 SPI 通信严格要求CPOL0空闲低且 CPHA0采样沿为第一个边沿。若 MCU SPI 外设不支持此模式如某些旧版 MSP430需改用软件 SPI 模拟此时st7565_hal_t.spi_send函数应实现精确的 GPIO 时序控制。2.2 电源与对比度设计要点ST7565 内置 DC-DC 电荷泵可将 3.3V 输入升压至 -10V 左右用于 LCD 偏压。VOUT引脚必须外接 10μFX7R陶瓷电容至VSS否则电荷泵无法稳定工作表现为屏幕闪烁或全黑。实测表明使用 4.7μF 电容会导致低温下0℃启动失败故强烈推荐 10μF。V0引脚电压决定 LCD 对比度。其典型值为 -3.2V对应中等亮度下最佳可视角度。设计时应采用双联电位器一联调节V0电压另一联串联至LED引脚以同步调节背光亮度实现视觉一致性。若使用恒流 LED 驱动芯片如 AS1130则LED引脚可直接接地由芯片独立控制。3. 软件架构与 HAL 抽象层3.1st7565_hal_t结构体定义库的核心可移植性由st7565_hal_t结构体实现其定义如下精简自源码typedef struct { void (*cs_high)(void); // CS 引脚置高禁用器件 void (*cs_low)(void); // CS 引脚置低使能器件 void (*dc_high)(void); // A0 引脚置高后续传输为数据 void (*dc_low)(void); // A0 引脚置低后续传输为命令 void (*spi_send)(uint8_t); // 发送单字节至 SPI 总线 void (*delay_ms)(uint32_t); // 毫秒级延时用于 reset / busy 等 } st7565_hal_t;该结构体完全屏蔽了底层硬件细节。用户需在平台初始化阶段填充具体函数指针。以 STM32 HAL 库为例// 假设 CSGPIOA_PIN_4, DCGPIOA_PIN_5, SPI1 已初始化 static void hal_cs_high(void) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET); } static void hal_cs_low(void) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET); } static void hal_dc_high(void) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); } static void hal_dc_low(void) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); } static void hal_spi_send(uint8_t byte) { HAL_SPI_Transmit(hspi1, byte, 1, HAL_MAX_DELAY); } static void hal_delay_ms(uint32_t ms) { HAL_Delay(ms); } static const st7565_hal_t st7565_hal { .cs_high hal_cs_high, .cs_low hal_cs_low, .dc_high hal_dc_high, .dc_low hal_dc_low, .spi_send hal_spi_send, .delay_ms hal_delay_ms };✅ 工程实践提示delay_ms不必为高精度定时器HAL_Delay()或简单 for 循环均可因 ST7565 的 reset 时序≥10ms和 busy 检测最大 100ms容忍度较高。但spi_send必须保证原子性——禁止在 SPI 传输中途被中断打断否则可能触发控制器总线错误。3.2 初始化流程与寄存器配置ST7565 初始化需严格遵循数据手册时序Sitronix ST7565 Datasheet Rev 1.3, Section 6.2。ST7565SPI将初始化分解为三个原子步骤硬件复位拉低RES引脚 ≥10μs再拉高 ≥10ms库内通过hal.delay_ms(10)实现基础寄存器配置依次写入0xE2软复位、0xA21/9 偏压、0xA0ADC 选择SEG0→SEG127 正向、0xC8COM 输出扫描方向COM63→COM0 反向、0x2F电源控制启用全部电源、0x27电阻比率Rb5显示控制使能0xAF开显示、0xA5全屏点亮测试可选。完整初始化代码示例#include st7565_spi.h // 全局句柄可声明为 static 以限制作用域 st7565_t lcd; int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); // 初始化 CS/DC/RES 等 GPIO MX_SPI1_Init(); // 初始化 SPI 外设 // 绑定 HAL 结构体 st7565_init(lcd, st7565_hal); // 执行初始化含硬件复位 st7565_reset(lcd); // 清屏并显示测试图案 st7565_clear(lcd); st7565_display(lcd); // 刷新到 LCD // 绘制对角线验证坐标系 for (uint8_t i 0; i 64; i) { st7565_draw_pixel(lcd, i, i); } st7565_display(lcd); while(1) { /* 主循环 */ } } 原理剖析st7565_reset()函数内部先执行硬件复位通过hal.delay_ms再发送软复位命令0xE2。此举确保控制器从已知状态启动规避因上电时序不稳导致的初始化失败。0xA0与0xC8的组合定义了标准的“左上角为原点、X 向右递增、Y 向下递增”的笛卡尔坐标系与绝大多数嵌入式 GUI 库保持一致。4. 核心 API 详解与使用范式4.1 像素级操作 APIST7565 的 DDRAM 按页Page组织每页 8 行0–7共 8 页Page 0–7每页 128 字节对应 128 列。像素地址(x, y)映射到 DDRAM 的公式为页号page y / 8列地址col x字节内位bit y % 8ST7565SPI提供以下像素操作函数函数原型功能说明典型用途void st7565_draw_pixel(st7565_t*, uint8_t x, uint8_t y)在(x,y)置 1点亮绘制点、线、图形轮廓void st7565_clear_pixel(st7565_t*, uint8_t x, uint8_t y)在(x,y)置 0熄灭擦除、动画帧清除bool st7565_get_pixel(st7565_t*, uint8_t x, uint8_t y)读取(x,y)当前状态0/1碰撞检测、状态查询关键实现逻辑st7565_draw_pixelvoid st7565_draw_pixel(st7565_t *lcd, uint8_t x, uint8_t y) { uint8_t page y 3; // y / 8 uint8_t bit y 0x07; // y % 8 uint8_t mask 1 bit; uint8_t *ptr lcd-buffer[page * 128 x]; *ptr | mask; // 置位操作 }✅ 工程优势所有像素操作均在本地lcd-buffer1024 字节 RAM 缓冲区中进行完全避免对 LCD 的实时读-修改-写RMW操作。这极大提升了绘图性能并消除了因 SPI 读取失败导致的显示异常风险。4.2 图形与文本渲染 API4.2.1 矩形与直线绘制// 绘制空心矩形左上角 x1,y1右下角 x2,y2 void st7565_draw_rect(st7565_t*, uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2); // 绘制实心矩形 void st7565_fill_rect(st7565_t*, uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2); // 绘制直线Bresenham 算法 void st7565_draw_line(st7565_t*, uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1);st7565_fill_rect()是性能关键函数。其实现采用“页内字节填充 边界处理”策略若矩形高度 ≥8 行则对中间完整页直接memset()对应缓冲区区域对顶部/底部不完整页逐行计算起始/结束列用for循环置位。4.2.2 ASCII 文本渲染库内置 5×8 点阵字体font5x8.h支持标准 ASCII 32–126空格至~。文本渲染 API// 在 (x,y) 位置显示字符串y 为字符基线非像素行 void st7565_draw_string(st7565_t*, uint8_t x, uint8_t y, const char*); // 显示单个字符 void st7565_draw_char(st7565_t*, uint8_t x, uint8_t y, char c);st7565_draw_char()的核心逻辑const uint8_t *glyph font5x8[(c - 32) * 5]; // 获取字模首地址 for (uint8_t col 0; col 5; col) { // 遍历字模 5 列 uint8_t data glyph[col]; for (uint8_t bit 0; bit 8; bit) { // 遍历每列 8 行 if (data (1 bit)) { st7565_draw_pixel(lcd, x col, y bit); } } }⚙️ 参数配置说明y参数指定字符基线baseline的 Y 坐标而非第一行像素。例如y0时字符顶部将位于屏幕最上方第 0 行符合人眼阅读习惯。此设计允许与更大字体或图标混合排版。4.3 显示控制与高级功能函数原型功能说明应用场景void st7565_invert_display(st7565_t*)反转整个显示前景/背景互换强化可视性、夜间模式void st7565_set_contrast(st7565_t*, uint8_t)设置对比度0x00–0x3F值越大越暗动态适应环境光void st7565_sleep_on(st7565_t*)进入睡眠模式功耗 10μA电池供电设备待机void st7565_sleep_off(st7565_t*)退出睡眠模式唤醒后快速恢复显示void st7565_display(st7565_t*)将缓冲区内容刷新至 LCD关键所有绘图操作后必须调用st7565_display()是唯一真正与硬件交互的“提交”函数。其执行流程为发送0xB0–0xB7页地址命令依次设置 Page 0 至 Page 7对每页发送0x10x_high和0x00x_low设置列地址0–127调用st7565_write_data_block()一次性发送该页 128 字节数据。此设计确保了刷新的原子性——用户可在缓冲区中自由绘图最终一次display()调用完成全屏更新避免画面撕裂。5. 实战应用FreeRTOS 集成与低功耗优化5.1 FreeRTOS 任务安全访问在多任务环境中多个任务可能并发访问 LCD。ST7565SPI本身无锁机制需由用户添加同步。推荐方案使用二进制信号量Binary Semaphore保护st7565_display()及所有绘图 API。SemaphoreHandle_t lcd_mutex; void lcd_task(void *pvParameters) { lcd_mutex xSemaphoreCreateBinary(); xSemaphoreGive(lcd_mutex); // 初始可用 for(;;) { if (xSemaphoreTake(lcd_mutex, portMAX_DELAY) pdTRUE) { st7565_clear(lcd); st7565_draw_string(lcd, 0, 0, RTOS OK); st7565_display(lcd); xSemaphoreGive(lcd_mutex); } vTaskDelay(1000); } }✅ 工程经验切勿在中断服务程序ISR中调用任何st7565_*函数。SPI 传输可能耗时数毫秒会严重破坏实时性。正确做法是 ISR 中仅置位标志位或发送消息到 LCD 任务队列由任务在上下文安全时执行绘图。5.2 低功耗模式下的 LCD 管理对于电池供电设备LCD 是主要功耗源之一。ST7565SPI提供两级节能策略动态刷新率控制非活动状态下降低st7565_display()调用频率。例如传感器数据显示任务每 5 秒刷新一次而非 100ms深度睡眠协同当 MCU 进入 Stop Mode 时调用st7565_sleep_on(lcd)唤醒后先执行st7565_sleep_off(lcd)再重新初始化st7565_reset()并刷新。STM32L4 示例进入 Stop2 模式前// 关闭 LCD 显示并进入睡眠 st7565_display_off(lcd); // 先关显示 st7565_sleep_on(lcd); // 再进睡眠模式 // 配置 PWR enter Stop2 HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI, PWR_STOP2ENTRY); // 唤醒后... st7565_sleep_off(lcd); st7565_reset(lcd); // 必须重置因睡眠中寄存器丢失 st7565_clear(lcd); st7565_display(lcd);实测表明在 STM32L432KC3.3V平台上启用st7565_sleep_on()后 LCD 模块静态电流从 180μA 降至 2.1μA整机待机电流降低 15%显著延长纽扣电池寿命。6. 故障排查与性能调优6.1 常见问题诊断表现象可能原因解决方案屏幕全黑/无反应VOUT电容缺失或失效RES未正确复位检查 10μF 电容焊接用示波器确认RES时序显示错位/偏移A0引脚接错st7565_init()未调用确认A0连接检查初始化顺序字符模糊/对比度低V0电压不准0x27电阻比率配置错误调节电位器尝试0x26或0x28刷新时出现横条纹st7565_display()被中断打断SPI 时钟不稳禁用全局中断检查 SPI CPOL/CPHA 配置绘图后无显示忘记调用st7565_display()在所有绘图操作后强制添加此调用6.2 性能优化关键点SPI 速率选择ST7565 最高支持 10MHz但实际受限于 MCU GPIO 翻转速度与 PCB 走线。建议从 2MHz 开始测试逐步提升至无误码上限。STM32F4 在 8MHz 下稳定而 ESP32 需 ≤4MHz。缓冲区优化lcd-buffer占用 1024 字节 RAM。若 RAM 极其紧张可改用st7565_write_data_block()直接发送生成的数据如实时波形跳过缓冲区。批量操作避免在循环中频繁调用st7565_draw_pixel()。对连续像素如直线、矩形优先使用st7565_fill_rect()或自定义memcpy()到缓冲区。某工业仪表项目中通过将 128×64 全屏清屏从 1024 次draw_pixel()优化为单次memset(lcd-buffer, 0, 1024)刷新时间从 18.2ms 降至 0.3ms提升 60 倍。7. 扩展应用与常用传感器/外设协同ST7565SPI的简洁 API 使其极易与各类传感器集成。以下是两个典型场景的代码骨架7.1 温湿度数据显示DHT22 ST7565#include dht22.h #include st7565_spi.h void sensor_display_task(void *pvParameters) { float temp, humi; char buf[16]; for(;;) { if (dht22_read_data(temp, humi) DHT_OK) { st7565_clear(lcd); snprintf(buf, sizeof(buf), T:%.1fC, temp); st7565_draw_string(lcd, 0, 0, buf); snprintf(buf, sizeof(buf), H:%.0f%%, humi); st7565_draw_string(lcd, 0, 16, buf); st7565_display(lcd); } vTaskDelay(2000); } }7.2 按键交互菜单GPIO 按键 LCD#define KEY_UP HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) #define KEY_DOWN HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) uint8_t menu_index 0; const char* menu_items[] {System Info, Sensor Data, Settings}; void menu_task(void *pvParameters) { for(;;) { if (!KEY_UP) { // 上键 menu_index (menu_index 0) ? 2 : menu_index - 1; vTaskDelay(200); // 消抖 } if (!KEY_DOWN) { // 下键 menu_index (menu_index 2) ? 0 : menu_index 1; vTaskDelay(200); } st7565_clear(lcd); st7565_draw_string(lcd, 0, 0, Menu:); st7565_draw_string(lcd, 0, 16, menu_items[menu_index]); st7565_display(lcd); vTaskDelay(50); } }此类应用充分体现了ST7565SPI的工程价值以最小的代码体积、最短的学习曲线快速构建专业级嵌入式人机界面。其设计哲学——“明确的责任划分、可预测的执行模型、无隐藏副作用”——正是工业级固件开发的核心诉求。

相关文章:

ST7565SPI嵌入式LCD驱动库:轻量、可移植、零内存分配

1. ST7565SPI 驱动库概述ST7565 是 Sitronix 公司推出的单芯片图形点阵 LCD 控制器,广泛应用于工业人机界面、便携式仪器仪表、智能穿戴设备等对功耗、成本与显示质量有综合要求的嵌入式场景。其典型分辨率为 12864 像素,内置 12864 bit 显示 RAM&#x…...

提升开发效率与编码体验:开源字体LxgwWenKai跨平台配置全指南

提升开发效率与编码体验:开源字体LxgwWenKai跨平台配置全指南 【免费下载链接】LxgwWenKai LxgwWenKai: 这是一个开源的中文字体项目,提供了多种版本的字体文件,适用于不同的使用场景,包括屏幕阅读、轻便版、GB规范字形和TC旧字形…...

PhysX帧分配器:一帧一擦的高效艺术

写满就擦,擦完再写,永不停歇引子:数学老师的白板 还记得高中数学课吗? 老师走进教室,面前是一块干干净净的白板。他开始讲解——写公式、画图形、列步骤,白板渐渐被填满。下课铃响,老师拿起板擦…...

当multisim遇见ai助手:快马平台如何智能分析与优化你的电路设计

作为一名电子设计爱好者,最近在InsCode(快马)平台尝试了一个特别有意思的项目——用AI辅助优化Multisim电路设计。整个过程就像有个专业的电子工程师在旁边实时指导,分享下我的实践心得: 直流工作点智能诊断 输入一个简单的晶体管放大电路后&…...

XML Notepad:免费高效的XML编辑器终极指南

XML Notepad:免费高效的XML编辑器终极指南 【免费下载链接】XmlNotepad XML Notepad provides a simple intuitive User Interface for browsing and editing XML documents. 项目地址: https://gitcode.com/gh_mirrors/xm/XmlNotepad XML Notepad是一款由微…...

PHP 的异步编程 该怎么选择

一切的起点:synchronized 的舒适区 刚开始写代码时,思维往往停留在"单机"模式。遇到需要控制并发的地方,直觉反应就是加个 synchronized 关键字。 1. 曾经写过的代码 // 简单的库存扣减 public synchronized void deductStock(Stri…...

嵌入式串口协议中间件:轻量级SerHelp库设计与应用

1. 项目概述nahs-Bricks-Lib-SerHelp是 NAHS(North American Home System)生态中面向嵌入式砖块化(Brick-based)硬件平台的一套轻量级串行通信辅助库。该库不提供底层驱动实现,而是聚焦于串口协议层的工程化封装与通用…...

阿联酋人工智能大学:AI能在战争迷雾中做出理性判断吗?

这项由阿联酋穆罕默德本扎耶德人工智能大学和美国马里兰大学共同完成的研究发表于2026年3月,论文编号为arXiv:2603.16642v1。有兴趣深入了解的读者可以通过该编号查询完整论文。在人类历史上,预测战争走向一直是个极其困难的任务。就像我们很难在暴风雨中…...

LuckyLilliaBot QQ群管理自动化实战指南:从零搭建高效智能管理方案

LuckyLilliaBot QQ群管理自动化实战指南:从零搭建高效智能管理方案 【免费下载链接】LuckyLilliaBot NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot LuckyLilliaBot是一款基于NTQQ客户端与OneBot11协议的QQ机器人开发框…...

如何选择可靠的第三方软件测试机构,构建全生命周期的软件安全防线

在数字化转型的浪潮中,软件已成为企业运营的核心。然而,伴随其重要性一同增长的,是日益严峻的安全威胁。传统软件开发流程中,安全测试往往被置于交付前的独立环节,这种“事后补丁”的模式导致安全漏洞发现晚、修复成本…...

OpenClaw多模态扩展:Qwen3.5-4B-Claude处理截图与PDF

OpenClaw多模态扩展:Qwen3.5-4B-Claude处理截图与PDF 1. 为什么需要多模态能力? 去年夏天,我遇到一个头疼的问题:需要从几百份PDF报告里提取关键数据。手动复制粘贴不仅耗时,还容易出错。当时我就在想,如…...

前端拖拽交互实现:别再只会用原生拖拽了

前端拖拽交互实现:别再只会用原生拖拽了 毒舌时刻这代码写得跟网红滤镜似的——仅供参考。各位前端同行,咱们今天聊聊前端拖拽交互。别告诉我你还在用原生的HTML5拖拽API,那感觉就像在用诺基亚手机——能打电话,但体验太差。 为什…...

收藏!小白也能看懂的大模型如何改写工业效率?

收藏!小白也能看懂的大模型如何改写工业效率? 本文介绍了中控技术的TPT大模型在工业生产中的应用,它通过实时监控、自动计算最优参数和风险预警,帮助企业提升效率、降低成本。与互联网领域的AI应用不同,工业AI的价值更…...

终极Chrome全页截图指南:一键保存完整网页内容的高效方案

终极Chrome全页截图指南:一键保存完整网页内容的高效方案 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-ex…...

【独家首发】Polars 2.0 vs Pandas 2.2清洗基准测试:10亿行CSV清洗仅耗11.3秒?真相在此

第一章:Polars 2.0大规模数据清洗的范式跃迁Polars 2.0 不再是 Pandas 的轻量替代品,而是一次面向现代硬件与真实业务场景的数据处理范式重构。其核心跃迁体现在零拷贝内存布局、全链路惰性执行引擎(LazyFrame)与原生支持的并行流…...

RK3588开发板TF卡槽改造:实现SDIO WIFI模组O9201SB的灵活接入

1. RK3588开发板TF卡槽改造背景与价值 最近在折腾RK3588开发板时,发现一个很有意思的玩法:把原本只能插TF卡的卡槽改造成支持SDIO WIFI模组的接口。这个改造特别适合那些需要灵活接入不同WIFI模组的开发者,比如我在做智能家居网关开发时&…...

OpenClaw开发辅助:Qwen3.5-9B实现日志分析与错误自动修复

OpenClaw开发辅助:Qwen3.5-9B实现日志分析与错误自动修复 1. 为什么需要AI辅助日志分析? 每次凌晨被报警短信吵醒,盯着密密麻麻的日志文件找异常时,我都会想:如果能有个AI助手帮我自动分析日志、定位问题甚至尝试修复…...

Nuxt4 官网访问来源统计的实现

今天我遇到一个值得记录的问题,场景是这样的:官网后台需要做访问统计,我得把访问来源和访问目标的 URL 传递给后端。绕了好一阵子,才终于理清楚。 项目结构上,Nuxt 4 负责官网展示,后端是 Java 服务。核心…...

小白必看!收藏这份Agent思维链技术指南,轻松入门大模型世界

小白必看!收藏这份Agent思维链技术指南,轻松入门大模型世界 本文深入解析了Agent模型中的思维链技术,介绍了不同模型如Claude、Gemini等对思维链的不同称谓及其核心原理,即通过将思考内容带入上下文来提升多轮推理性能。文章对比了…...

浒浦潮汐表查询2026-03-28

位置:浒浦,日期:2026-03-28,农历:丙午[马]年二月初十,星期:星期六,潮汐类型:小潮死汛最高水位:275.00cm,最低水位:122.00cm&#xff0…...

EtherCAT模块化实战:如何为你的设备设计可热插拔的IO模块(基于SSC与0x4711示例)

EtherCAT模块化实战:如何为你的设备设计可热插拔的IO模块 在工业自动化领域,设备的灵活性和可扩展性正变得越来越重要。想象一下,当你的客户需要在生产线上快速更换不同类型的传感器或执行器时,如果每次硬件变更都需要重新配置整个…...

在WSL2 Ubuntu 22.04上搞定RK3568 SDK编译:我遇到的8个坑和填坑方法

在WSL2 Ubuntu 22.04上搞定RK3568 SDK编译:我遇到的8个坑和填坑方法 作为一名长期在Windows环境下工作的嵌入式开发者,第一次尝试在WSL2中编译RK3568 SDK的经历简直像是一场噩梦。从环境配置到最终构建成功,我踩遍了几乎所有可能的坑。这篇文…...

图结构AI Agent记忆机制深度解析:小白/程序员必备,收藏学习大模型前沿技术!

图结构AI Agent记忆机制深度解析:小白/程序员必备,收藏学习大模型前沿技术! 本文深入解析了基于图结构的AI Agent记忆机制,揭示了LLM驱动AI Agent面临的三大局限:知识截断、工具 incompetence 和性能饱和。文章强调记…...

通用GUI编程技术——Win32 原生编程实战(十八)——GDI 设备上下文(HDC)完全指南

通用GUI编程技术——Win32 原生编程实战(十八)——GDI 设备上下文(HDC)完全指南 前面一系列文章我们聊了对话框、控件、资源这些内容,我们的窗口已经能够显示各种控件了。但你可能已经发现了一个问题:我们所…...

IDEA 2023.3 配置 JavaWeb 项目完整流程:从新建到打包 War 的保姆级避坑指南

IDEA 2023.3 配置 JavaWeb 项目完整流程:从新建到打包 War 的保姆级避坑指南 作为一名长期使用 IntelliJ IDEA 进行 JavaWeb 开发的工程师,我深知在配置项目时可能遇到的各种"坑"。特别是对于刚接触 IDEA 的新手来说,从项目创建到最…...

OpenSpec 生成文件说明

proposal.md —— 为什么做、做什么(产品/范围) Why:要解决什么问题、机会是什么。What Changes:会新增/改掉/删掉哪些能力,有没有 BREAKING。Capabilities:会动到哪些能力名(对应后面 specs/&l…...

电子小白之二极管

很多年前我第一次看到电路图上各种二极管符号时,心里只有一个想法:这玩意儿到底干嘛用的?硬件部门同事告诉我一句话,瞬间就通了: 正向导通,反向截止;整流防反,稳压发光。 今天就用最…...

云服务器购买怎么选?2026云服务器优惠与租赁指南

在AI创作、3D渲染、远程办公快速发展的今天,「云服务器购买」「云服务器租赁」已经成为越来越多个人和企业的刚需。但面对复杂的配置和价格体系,很多人都会问:👉 到底怎么选最划算? 👉 有没有长期稳定又有“…...

DBA_RECYCLEBIN purge指定日期前的表

SummaryHow to purge DBA_RECYCLBIN for objects older than x days/minutes? or do we have RECYCLEBIN RETENTION feature or truncate recyclebin ?--------------------------------------------------------------------------------------DBA_RECYCLEBIN has a column …...

AI 模型推理框架性能分析与对比

AI模型推理框架性能分析与对比 随着人工智能技术的快速发展,AI模型推理框架成为支撑各类应用落地的核心工具。无论是计算机视觉、自然语言处理还是推荐系统,高效的推理框架直接影响模型的响应速度、资源占用和部署成本。本文将从多个维度对比主流AI推理…...