GXHT30温湿度传感器STM32 I2C驱动实战:从地址、CRC到避坑指南
简介这份资源是中科银河芯GXHT30温湿度传感器模块的STM32 I2C驱动示例面向正在做嵌入式开发、需要快速接入温湿度采集功能的工程师与学习者。它解决的是从零编写GXHT30底层通信代码耗时的问题适合智能家居、物联网设备与环境监控等场景的入门与验证。压缩包共2个文件包含1个c源文件与1个h头文件整体约3KB体量轻巧核心是I2C接口的初始化配置、读写函数实现与温湿度数据解析逻辑可直接嵌入现有STM32工程。目前已有1611人学习下载说明其在同类驱动参考中具备一定认可度。读者可借此理解STM32通过I2C总线与GXHT30通信的完整流程掌握寄存器操作、原始数据校准与补偿思路并以此为模板迁移到其他I2C传感器减少重复调试时间提升嵌入式固件开发效率。1. 拿到 GXHT30 模块先别急着写驱动这颗传感器的 I2C 脾气比你想的怪GXHT30 这颗温湿度传感器最近在嵌入式圈子里被问得越来越多原因很直接I2C 接口、宽电压、出厂校准、精度够用价格又不劝退做环境监测、冷链记录、智能家居节点的人几乎绕不开它。但很多人拿到模块的第一反应是翻数据手册、找例程、把 SDA/SCL 一接就开始写HAL_I2C_Master_Transmit结果读回来的温湿度要么是 0xFFFF要么跳变到离谱的值然后开始怀疑模块坏了、怀疑上拉电阻、怀疑 STM32 的 I2C 外设是不是有玄学。这篇东西就是围绕「GXHT30 STM32 I2C」这条最朴素的链路展开的。我会把从模块选型、硬件连接到寄存器读写、CRC 校验、周期测量模式、再到实际排错的过程完整走一遍代码基于 STM32 HAL 库能直接往 CubeMX 生成的工程里塞。适合两类人一类是刚上手 I2C 传感器、想找一个能跑通的完整参考的新手另一类是已经调过 SHT30/GXHT30 但被 CRC 或时钟拉伸坑过、想确认自己理解对不对的老手。整篇不依赖任何特定开发板F1/F4/G0/L4 都能套。2. GXHT30 的 I2C 协议到底怎么读从地址、命令到 CRC 的完整链路2.1 先搞清楚 7 位地址和 8 位地址的区别GXHT30 的 I2C 从机地址由 ADDR 引脚决定。ADDR 接 GND 时7 位地址是0x44ADDR 接 VDD 时7 位地址是0x45。这里有一个新手最容易翻车的地方STM32 HAL 库的HAL_I2C_Master_Transmit第一个参数要的是左移一位后的 8 位地址也就是0x44 1 0x88写或0x89读。如果你直接把0x44传进去HAL 会把它当成 7 位地址再左移实际发出去的就是0x88看起来好像也能通——但一旦你换成0x45的模块就会莫名其妙失败。我一般会在头文件里统一定义/* GXHT30 7位地址ADDR 接 GND */ #define GXHT30_I2C_ADDR_7BIT (0x44 1) /* 常用命令16位高字节在前 */ #define GXHT30_CMD_MEAS_HIGH 0x2C06 /* 单次测量高重复性时钟拉伸使能 */ #define GXHT30_CMD_MEAS_MED 0x2C0D /* 单次测量中重复性 */ #define GXHT30_CMD_MEAS_LOW 0x2C10 /* 单次测量低重复性 */ #define GXHT30_CMD_SOFT_RESET 0x30A2 /* 软复位 */ #define GXHT30_CMD_PERIODIC_1M 0x2130 /* 周期测量1次/秒 */命令是 16 位的发送时必须先发高字节再发低字节这一点和很多 8 位命令的传感器不一样。如果你只发了一个字节就去读数据传感器根本不会启动转换。2.2 单次测量模式的完整时序单次测量是最常用的模式流程是发送命令 → 等待转换完成 → 读取 6 个字节。6 个字节的结构是温度高字节、温度低字节、温度 CRC、湿度高字节、湿度低字节、湿度 CRC。/** * brief 单次读取 GXHT30 温湿度 * param temp: 温度输出单位摄氏度 * param humi: 湿度输出单位百分比 * retval 0 成功-1 失败 */ int gxht30_read_once(float *temp, float *humi) { uint8_t cmd[2]; uint8_t buf[6]; uint16_t raw_temp, raw_humi; /* 1. 发送单次测量命令高重复性 */ cmd[0] (GXHT30_CMD_MEAS_HIGH 8) 0xFF; cmd[1] GXHT30_CMD_MEAS_HIGH 0xFF; if (HAL_I2C_Master_Transmit(hi2c1, GXHT30_I2C_ADDR_7BIT, cmd, 2, 100) ! HAL_OK) { return -1; } /* 2. 等待转换完成高重复性最大 15.5ms这里给 20ms 余量 */ HAL_Delay(20); /* 3. 读取 6 字节数据 */ if (HAL_I2C_Master_Receive(hi2c1, GXHT30_I2C_ADDR_7BIT | 0x01, buf, 6, 100) ! HAL_OK) { return -1; } /* 4. CRC 校验任何一帧失败都直接返回 */ if (gxht30_crc8(buf, 2) ! buf[2]) return -1; if (gxht30_crc8(buf 3, 2) ! buf[5]) return -1; /* 5. 原始值转物理量 */ raw_temp (buf[0] 8) | buf[1]; raw_humi (buf[3] 8) | buf[4]; *temp -45.0f 175.0f * raw_temp / 65535.0f; *humi 100.0f * raw_humi / 65535.0f; return 0; }这段代码里有几个参数值得单独说。GXHT30_CMD_MEAS_HIGH对应高重复性转换时间典型 12.5ms、最大 15.5ms所以HAL_Delay(20)是留了余量的。如果你用中重复性0x2C0D最大 6.5ms延时可以缩到 10ms低重复性0x2C10最大 4ms延时 5ms 就够。重复性越高噪声越小但功耗和响应时间也越大电池供电的场景要权衡。CRC 校验函数是 GXHT30 的硬性要求不是可选项。它的多项式是0x31初始值0xFF不反射、不异或输出/** * brief GXHT30 CRC-8 校验 * param data: 待校验数据 * param len: 数据长度 * retval CRC 结果 */ uint8_t gxht30_crc8(const uint8_t *data, uint8_t len) { uint8_t crc 0xFF; for (uint8_t i 0; i len; i) { crc ^ data[i]; for (uint8_t b 0; b 8; b) { if (crc 0x80) crc (crc 1) ^ 0x31; else crc 1; } } return crc; }这个 CRC 实现是逐位计算的代码小、可移植适合资源紧张的 MCU。如果你在 F4 这类有硬件 CRC 的芯片上也可以配硬件 CRC但要注意 GXHT30 的 CRC 参数和 STM32 硬件 CRC 默认配置不一样需要改多项式、初始值和输入输出反转设置改起来比软件实现还麻烦我一般直接用软件版。2.3 周期测量模式什么时候值得用单次测量每次都要发命令、等转换、再读如果你要 1Hz 连续采样这套流程会占掉不少 CPU 时间。GXHT30 支持周期测量模式发一次命令后传感器自己按固定频率转换MCU 只需要定时去读最新结果。/* 启动周期测量1次/秒高重复性 */ uint8_t cmd[2] {0x21, 0x30}; HAL_I2C_Master_Transmit(hi2c1, GXHT30_I2C_ADDR_7BIT, cmd, 2, 100); /* 之后每隔 1 秒读一次 6 字节不需要再发命令 */ HAL_Delay(1000); uint8_t buf[6]; HAL_I2C_Master_Receive(hi2c1, GXHT30_I2C_ADDR_7BIT | 0x01, buf, 6, 100);周期模式的坑在于启动后第一次读取必须等至少一个转换周期否则读到的是旧数据或者全 0。另外周期模式下如果 MCU 复位了但传感器没断电它还在继续转换这时候你重新初始化会收到一个 NACK需要先发软复位0x30A2再重新配置。这个细节在数据手册里写得很隐蔽我当初就是被这个坑了半个下午。3. STM32 端 I2C 外设怎么配CubeMX 参数和 HAL 调用顺序3.1 CubeMX 里 I2C 的四个关键参数用 CubeMX 配 I2C 的时候大部分人只改时钟频率其他全默认然后发现通信不稳定。实际上有四个参数需要根据你的总线和传感器特性来定参数推荐值说明I2C Speed ModeStandard / FastGXHT30 支持 1MHz但长线建议 100kHzClock Speed100000 Hz标准模式兼容性最好Rise Time根据上拉电阻算4.7k 上拉 100pF 负载约 300nsFall Time默认 100ns一般不用改Analog FilterEnable抑制毛刺长线必开Digital Filter根据噪声调噪声大时开会引入延迟时钟频率不是越高越好。我见过有人为了「快」直接上 400kHz结果杜邦线一长就随机 NACK。GXHT30 本身支持到 1MHz但你的板级布线、上拉电阻、线材电容决定了实际能跑多快。稳妥做法是先用 100kHz 跑通再逐步往上试每次改完用逻辑分析仪看波形上升沿是否干净。3.2 HAL 调用的超时和错误处理HAL 库的 I2C 函数最后一个参数是超时时间单位毫秒。很多人随手写HAL_MAX_DELAY这在调试阶段是灾难——总线被拉死的时候程序直接卡住你连看门狗都喂不了。我一般写 100ms并且检查返回值HAL_StatusTypeDef ret; ret HAL_I2C_Master_Transmit(hi2c1, GXHT30_I2C_ADDR_7BIT, cmd, 2, 100); if (ret ! HAL_OK) { /* 记录错误码HAL 会把具体原因放在 hi2c1.ErrorCode 里 */ uint32_t err hi2c1.ErrorCode; /* 常见AF 表示 NACKBERR 表示总线错误ARLO 表示仲裁丢失 */ gxht30_bus_recover(); return -1; }hi2c1.ErrorCode是排查 I2C 问题的黑匣子。HAL_I2C_ERROR_AF说明从机没应答通常是地址错了或者传感器没上电HAL_I2C_ERROR_BERR是总线电平异常多半是上拉或短路HAL_I2C_ERROR_ARLO是多主机仲裁丢失单主机场景基本不会出现。养成读 ErrorCode 的习惯比盲目换线换模块高效得多。3.3 总线卡死后的恢复流程I2C 总线被从机拉低不放的情况在热插拔或者传感器供电不稳的时候很常见。这时候 SCL 和 SDA 都可能是低电平HAL 库的所有传输都会超时。恢复的办法是手动发 9 个 SCL 脉冲让从机把数据移完释放总线/** * brief I2C 总线恢复手动翻转 SCL 直到 SDA 释放 */ void gxht30_bus_recover(void) { GPIO_InitTypeDef gpio {0}; /* 先把 I2C 外设关掉引脚切回普通 GPIO */ HAL_I2C_DeInit(hi2c1); gpio.Pin GPIO_PIN_6 | GPIO_PIN_7; /* SCLPB6, SDAPB7 */ gpio.Mode GPIO_MODE_OUTPUT_OD; gpio.Pull GPIO_PULLUP; gpio.Speed GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOB, gpio); /* 发 9 个时钟脉冲 */ for (int i 0; i 9; i) { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET); HAL_Delay(1); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET); HAL_Delay(1); } /* 发一个 STOP 条件SDA 低 - SCL 高 - SDA 高 */ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_RESET); HAL_Delay(1); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET); HAL_Delay(1); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET); HAL_Delay(1); /* 重新初始化 I2C */ MX_I2C1_Init(); }这段代码里的引脚号要按你的实际接线改。9 个脉冲的依据是 I2C 协议里一个字节 8 位加 1 个应答位从机最多再移 9 位就会释放 SDA。发完 STOP 后重新初始化 I2C 外设让 HAL 的状态机回到就绪态。这个恢复函数我一般放在错误处理分支里每次传输失败调一次能救回大部分假死场景。4. 避坑指南GXHT30 调试中最容易翻车的五个点4.1 读回来全是 0xFF 或 0xFFFF现象HAL_I2C_Master_Receive返回 HAL_OK但 buf 里全是 0xFF转换出来的温度是 100 多度、湿度是 100%。原因这种情况九成是传感器根本没启动转换。要么命令发错了比如只发了一个字节要么发送命令后没有等待转换完成就去读读到的还是上一次的残留或者上电默认值。还有一种可能是 ADDR 引脚悬空地址不确定HAL 碰巧收到了应答但数据无效。解决先用逻辑分析仪抓一次完整时序确认命令的两个字节都发出去了、ACK 正常、等待时间足够。如果没有逻辑分析仪把HAL_Delay(20)改成HAL_Delay(50)试一次如果好了就是等待时间不够。ADDR 引脚一定要明确接 GND 或 VDD不要悬空。4.2 CRC 校验随机失败现象大部分读取正常偶尔 CRC 校验不过重读一次又好了。原因CRC 失败说明数据在传输过程中被干扰了。常见来源是 I2C 走线太长、上拉电阻太大导致上升沿太缓、或者电源噪声耦合到了信号线上。还有一种情况是你用了周期测量模式读取频率和传感器转换频率不同步读到了正在更新的数据。解决先缩短线材杜邦线控制在 10cm 以内上拉电阻从 10k 换成 4.7k在 SDA/SCL 上并 100pF 电容滤高频。如果是周期模式确保读取周期大于转换周期或者改用单次测量模式。软件上CRC 失败不要直接丢弃可以重试一次连续失败三次再报错。4.3 HAL_I2C_Master_Transmit 返回 HAL_BUSY现象第一次读取正常连续调用几次后返回 HAL_BUSY之后一直失败。原因HAL 库的 I2C 状态机没有正确复位。常见于上一次传输超时后没有调用HAL_I2C_DeInit和重新初始化状态卡在 BUSY_TX 或 BUSY_RX。另外如果你在中断里调用了 I2C 函数和主循环里的调用冲突也会出现 BUSY。解决每次传输失败后检查hi2c1.State如果不是HAL_I2C_STATE_READY调用HAL_I2C_DeInit再MX_I2C1_Init。更彻底的做法是用HAL_I2C_Mem_Read这类带内部状态管理的函数或者在 I2C 外面加一层互斥锁确保同一时刻只有一个调用者。4.4 温度读数偏高 2~3 度现象GXHT30 读出来的温度比旁边参考温度计高 2~3 度湿度也偏低。原因这是典型的自热效应。GXHT30 在周期测量模式下连续转换芯片自身发热如果封装散热不好或者周围有热源比如 LDO、MCU读数就会偏高。另外如果传感器贴在 PCB 上PCB 的铜箔会把 MCU 的热量导过来。解决降低测量频率从 1Hz 改成 0.1Hz 或按需单次测量把传感器用延长线引出远离热源在传感器下方 PCB 开槽或者挖空减少热传导。如果对精度要求高可以在固件里做温度补偿但补偿系数需要实测标定不能拍脑袋。4.5 软复位后第一次读取失败现象调用软复位命令0x30A2后立刻发测量命令返回 NACK。原因软复位需要时间数据手册里写最大 1.5ms但实际和电源电压、温度有关。复位期间传感器不响应任何 I2C 命令你发过去的测量命令自然被 NACK。解决软复位后加HAL_Delay(2)再发测量命令。如果还不行加到 5ms。这个延时看起来不起眼但在低功耗场景里每次唤醒都复位的话累积起来也是功耗。更好的做法是只在初始化时复位一次运行中不复位。5. 把 GXHT30 用稳的三个进阶习惯5.1 用状态机替代 HAL_Delay 阻塞前面单次测量的代码里用了HAL_Delay(20)这在裸机小程序里没问题但一旦你的系统里还有屏幕刷新、按键扫描、无线收发20ms 的阻塞就会让其他任务卡顿。我后来改成状态机发完命令后记录时间戳主循环里轮询时间差到了再去读。typedef enum { GXHT30_IDLE, GXHT30_WAIT, GXHT30_READ } gxht30_state_t; static gxht30_state_t state GXHT30_IDLE; static uint32_t start_tick; void gxht30_task(void) { switch (state) { case GXHT30_IDLE: /* 触发一次测量 */ gxht30_start_measure(); start_tick HAL_GetTick(); state GXHT30_WAIT; break; case GXHT30_WAIT: /* 非阻塞等待转换完成 */ if (HAL_GetTick() - start_tick 20) { state GXHT30_READ; } break; case GXHT30_READ: if (gxht30_fetch_result(temp, humi) 0) { /* 数据有效交给上层 */ } state GXHT30_IDLE; break; } }这个状态机每 1ms 调一次CPU 占用可以忽略而且不会阻塞其他任务。HAL_GetTick()在 SysTick 中断里累加注意 tick 溢出问题用无符号减法HAL_GetTick() - start_tick可以自动处理溢出不要写成HAL_GetTick() start_tick 20。5.2 原始数据做滑动平均再上报GXHT30 的原始分辨率是 16 位但实际有效位数受噪声限制单次读数会有 ±0.1 度左右的跳动。如果你的应用要显示到小数点后一位直接上报会看到数字一直跳。我一般做一个长度 8 的滑动窗口#define FILTER_LEN 8 static float temp_buf[FILTER_LEN]; static uint8_t filter_idx 0; float gxht30_filter(float new_val) { temp_buf[filter_idx] new_val; filter_idx (filter_idx 1) % FILTER_LEN; float sum 0; for (int i 0; i FILTER_LEN; i) { sum temp_buf[i]; } return sum / FILTER_LEN; }窗口长度 8 是我试出来的平衡点再短滤波效果不明显再长响应变慢测环境温度变化时会有明显滞后。如果你测的是快速变化的场景比如吹气测温窗口要缩到 2 或 3或者改用一阶低通滤波。5.3 上电自检和故障上报产品化的时候传感器坏了不能静默。我习惯在初始化阶段做一次自检读三次如果三次都 CRC 失败或者数值超出物理范围温度不在 -45~130 度、湿度不在 0~100%就置一个故障标志上层可以选择报警或者用备用传感器。int gxht30_self_test(void) { float t, h; int fail 0; for (int i 0; i 3; i) { if (gxht30_read_once(t, h) ! 0) { fail; } else if (t -45.0f || t 130.0f || h 0.0f || h 100.0f) { fail; } HAL_Delay(50); } return (fail 3) ? -1 : 0; }自检通过不代表长期可靠但至少能挡住焊接不良、模块损坏、地址冲突这几类上电就暴露的问题。运行中如果连续 10 次读取失败我也会触发一次总线恢复恢复后还失败就上报故障。这套逻辑不复杂但能省掉很多现场排查的时间。最后说一个我自己的教训早期做 GXHT30 项目的时候我图省事把 CRC 校验关了觉得「数据看起来对就行」。结果有一批板子在潮湿环境下用了一个月湿度读数开始随机跳到 0 或者 100查了很久才发现是 I2C 受潮漏电导致数据位翻转而 CRC 本来能拦住这些脏数据。从那以后不管什么传感器只要它给了 CRC我一定校验一次都不省。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

深度学习环境搭建实战:编辑器+发行版+框架组合配置与避坑指南

深度学习环境搭建实战:编辑器+发行版+框架组合配置与避坑指南

1. 环境搭建的整体思路与选型考量1.1 为什么是这三个东西凑在一起搞深度学习环境这件事,说简单也简单,说折腾也是真折腾。我前前后后在不同机器上配过不下十次环境,从最早手动装Python、手动编译wheel,到后来用虚拟环境管理&#…

2026/10/16 19:04:56 阅读更多 →
HT7032三相电能计量芯片硬件设计与校准实战指南

HT7032三相电能计量芯片硬件设计与校准实战指南

简介:本资源面向嵌入式开发工程师及智能电表硬件设计人员,聚焦三相电能计量核心器件HT7032的工程化落地,解决高精度三相四线/三线制电能采集、寄存器配置、驱动开发与原理图设计等关键问题。压缩包共4个文件(2个PDF原理图、1个C源…

2026/10/16 19:04:56 阅读更多 →
企业微信客户营销怎么做?WorkBuddy+微盛·企微管家Skill连接器,一句话让AI把客户营销做起来

企业微信客户营销怎么做?WorkBuddy+微盛·企微管家Skill连接器,一句话让AI把客户营销做起来

很多企业都有同一个困惑:企业微信加了几万甚至几十万客户,标签、聊天记录、获客数据也都在,可营销就是做不动。问题不在数据少,而在"没人用得动"——想分析客户情况,得先找到标签入口;想看看聊天…

2026/10/16 19:03:55 阅读更多 →

最新新闻

MATLAB EMD工具箱实战:从经验模态分解到HHT时频分析

MATLAB EMD工具箱实战:从经验模态分解到HHT时频分析

简介:Matlab EMD经验模态分解工具箱,面向信号处理、故障诊断与振动分析领域的研究人员与工程师,用于对非线性、非平稳信号做自适应分解并提取有物理意义的本征模态函数分量。压缩包共38个文件,其中10个m脚本承担核心算法与在线/局…

2026/10/16 19:42:22 阅读更多 →
教务管理系统源码解析:技术选型、数据库设计与二次开发避坑指南

教务管理系统源码解析:技术选型、数据库设计与二次开发避坑指南

简介:这是一套面向计算机专业学生与Java Web开发者的教务管理系统完整源码,适合作为课程设计、毕业设计或企业级项目练手参考,帮助理解教育管理信息化的业务逻辑与技术落地。资源包共746个文件,约5.46MB,涵盖html、css…

2026/10/16 19:42:22 阅读更多 →
E7-2 AXOS everyPON 数据服务实施:从订户模板到策略映射实战指南

E7-2 AXOS everyPON 数据服务实施:从订户模板到策略映射实战指南

简介:Calix E7-2 AXOS everyPON数据服务实施课程的官方介绍文档,面向负责二层数据服务部署的技术员、网络运营者、规划师与工程师。资源包内仅含1个PDF文件,容量74KB,以精炼篇幅浓缩了4小时讲师授课的核心内容:E7-2 AX…

2026/10/16 19:42:22 阅读更多 →
gemma-skills新手必读:Google官方两大技能如何让AI Agent具备Gemma开发与微调能力

gemma-skills新手必读:Google官方两大技能如何让AI Agent具备Gemma开发与微调能力

【免费下载链接】gemma-skills Skills for the Gemma and model/agent interactions 项目地址: https://gitcode.com/gh_mirrors/ge/gemma-skills 点击查看 免费下载 如果你是刚接触 Gemma 模型的新手,gemma-skills 会是一个绝佳的起点。这是 Google 官…

2026/10/16 19:41:22 阅读更多 →
DeepSeek-V3-W4A8-Pruing权重文件怎么读?safetensors三分片结构与index索引完全解析

DeepSeek-V3-W4A8-Pruing权重文件怎么读?safetensors三分片结构与index索引完全解析

【免费下载链接】DeepSeek-V3-W4A8-Pruing 项目地址: https://ai.gitcode.com/hf_mirrors/vllm-ascend/DeepSeek-V3-W4A8-Pruing 点击查看 免费下载 初次接触 DeepSeek-V3-W4A8-Pruing 模型仓库时,面对 3 个 safetensors 分片文件、一个 578KB 的 index…

2026/10/16 19:41:22 阅读更多 →
整车控制器开发源代码:模块划分、状态机设计与工程落地

整车控制器开发源代码:模块划分、状态机设计与工程落地

简介:整车控制器(VCU)开发源代码包主要面向电动汽车与混合动力汽车控制系统的开发者、算法工程师及嵌入式软件研究者,用于解决VCU底层驱动、控制策略、状态机管理与故障处理等核心开发问题。包内文件共88个,以C源文件、…

2026/10/16 19:40:21 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →