STM32温控开关项目实战:从DHT11驱动到继电器控制全解析
1. 先搞清楚这个项目到底能做什么以及它适合谁这个项目标题叫“STM32温控开关”核心功能是用STM32单片机读取DHT11温湿度传感器的温度值然后通过继电器去控制一个外部设备比如风扇、加热棒的开关并且还能通过4个按键手动调节温度阈值。听起来很简单对吧但很多新手在第一次做这类项目时最容易卡住的不是代码本身而是几个关键环节的衔接传感器数据怎么稳定读取、继电器怎么安全驱动、按键怎么防抖并实时更新阈值、以及整个逻辑循环怎么设计才不冲突。如果你正在学STM32想找一个能把GPIO、定时器、中断、外设驱动和状态机逻辑串起来的综合小项目那么这个温控开关就是一个非常典型的练手案例。它不涉及复杂的通信协议或操作系统但几乎涵盖了单片机开发中最基础、最常用的那些技能点。最值得关注的价值在于你能通过它建立起一个完整的“感知-决策-执行”的嵌入式系统概念并且所有代码和硬件连接都是可以自己从头搭出来的。我一般会建议先从功能拆解开始测温部分要解决DHT11的时序读取问题继电器控制要解决隔离和驱动电流问题按键调阈值要解决实时响应和参数存储问题。把这些都跑通了一个可靠的温控开关原型也就出来了。2. 硬件清单与连接别在第一步就把电路接错动手写代码之前先把硬件理清楚。这个项目的硬件核心就四样STM32最小系统板、DHT11温湿度传感器、一个继电器模块、四个轻触按键。电源部分根据你的继电器型号来定如果继电器模块是5V驱动的那么可能需要一个额外的5V电源或者从开发板的5V引脚取电要确认电流够用。关键硬件说明STM32开发板F1系列如STM32F103C8T6就足够资源丰富社区资料也多。项目对性能要求不高F1、F4甚至G0系列都可以。DHT11传感器这是一个单总线数字传感器只需要一根数据线加上VCC和GND与单片机通信。它输出的是整数的温度和湿度值精度对于温控开关来说完全够用。注意它的时序要求比较严格必须按照数据手册的时序图来操作。继电器模块市面上常见的是低电平触发或高电平触发的模块。一定要看清楚你的模块是哪种触发方式这直接决定了你初始化GPIO时应该设置成推挽输出还是开漏输出以及输出电平的逻辑。模块上通常会有COM公共端、NO常开端、NC常闭端三个接线端子控制负载如风扇接在COM和NO之间。按键四个轻触按键用于增加阈值、减少阈值、切换模式如手动/自动、确认等。需要接上拉电阻开发板内部或外部均可配置为输入模式并做好软件防抖。接线参考表示例以STM32F103C8T6、低电平触发继电器为例元件引脚/端子连接到STM32备注DHT11VCC3.3V或5V看模块支持通常3.3V-5.5VGNDGNDDATAPA0可自定义需配置为推挽输出/浮空输入切换继电器模块VCC5V注意电流可从外部电源取电GNDGNDINPA1低电平触发输出0继电器吸合1断开按键1 (加)一端PA2另一端接GNDSTM32端配置上拉输入按键2 (减)一端PA3同上按键3 (模式)一端PA4同上按键4 (确认)一端PA5同上注意继电器的负载端COM/NO接的是你要控制的220V交流设备如风扇这部分是强电务必在断电情况下操作做好绝缘或者直接用低压直流负载如LED灯、小电机来模拟测试安全第一。3. 软件环境与工程框架搭建软件部分你可以用标准库也可以用HAL库。从学习和项目复杂度来看两者都可以。HAL库的抽象层次更高移植性稍好但代码量可能大一点标准库更直接对硬件操作更清晰。我这里以目前更通用的HAL库为例使用STM32CubeMX进行初始化配置然后用Keil MDK或STM32CubeIDE进行开发。第一步用STM32CubeMX配置引脚和时钟打开CubeMX选择你的芯片型号。系统核心在SYS里将Debug设为Serial Wire如果要用ST-Link调试。时钟在RCC里将HSE高速外部时钟设为Crystal/Ceramic Resonator。引脚配置DHT11 DATA (PA0)初始化为GPIO_Output推挽输出上拉我们先把它当输出引脚给传感器发开始信号。继电器控制 (PA1)初始化为GPIO_Output推挽输出上拉默认输出高电平继电器断开。四个按键 (PA2, PA3, PA4, PA5)全部初始化为GPIO_Input并启用内部上拉Pull-up。配置一个定时器如TIM2用于微秒级延时和按键扫描。将定时器时钟源设为内部时钟预分频器和周期值根据你的系统时钟计算使其产生1微秒的计数周期。配置一个系统定时器如SysTick或另一个定时器用于主循环周期调度比如每100ms执行一次传感器读取和逻辑判断。生成代码选择你的IDEMDK-ARM V5。第二步工程结构规划生成的代码已经有了HAL库和基本的引脚初始化。我建议在Src和Inc文件夹下新建几个文件来模块化代码dht11.c / dht11.h: DHT11驱动包含初始化、发送开始信号、读取40位数据、校验和计算、获取温湿度值的函数。relay.c / relay.h: 继电器驱动包含继电器打开、关闭、状态获取的函数。key.c / key.h: 按键驱动包含按键扫描、防抖处理、返回键值的函数。controller.c / controller.h: 主控逻辑包含温度阈值比较、自动/手动模式切换、控制继电器动作的状态机。main.c: 主函数负责初始化各模块并在主循环中调度任务。这样结构清晰以后要添加显示如OLED或通信如串口上报功能也方便。4. DHT11驱动编写时序是成败的关键DHT11的通信协议是单总线主机STM32发起通信然后传感器返回40位数据。时序要求非常严格微秒级的延时误差都可能导致读取失败。所以不要用HAL_Delay()这种毫秒级延时必须用定时器实现精准的微秒延时。核心步骤主机发送开始信号DATA引脚设置为输出模式拉低至少18ms然后拉高20-40us接着切换为输入模式等待传感器响应。传感器响应传感器会拉低80us再拉高80us之后开始传输数据。数据位读取每一位数据都以一个50us的低电平起始位开始随后的高电平持续时间决定数据是026-28us还是170us。需要在高电平期间采样DATA引脚的电平。代码要点dht11.c片段// 微秒延时函数基于配置好的定时器如TIM2实现 void DHT11_Delay_us(uint16_t us) { __HAL_TIM_SET_COUNTER(htim2, 0); while (__HAL_TIM_GET_COUNTER(htim2) us); } // 读取一个字节 uint8_t DHT11_ReadByte(void) { uint8_t i, data 0; for (i 0; i 8; i) { // 等待50us低电平起始位结束 while (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) GPIO_PIN_RESET); DHT11_Delay_us(40); // 延时40us后采样避开起始位落在数据位的高电平区间 data 1; if (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) GPIO_PIN_SET) { data | 1; // 等待剩余的高电平结束如果是‘1’高电平长约70us while (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) GPIO_PIN_SET); } } return data; } // 读取温湿度 uint8_t DHT11_ReadData(uint8_t *temp, uint8_t *humi) { uint8_t buf[5]; uint8_t i; // 主机拉低18ms HAL_GPIO_WritePin(DHT11_GPIO_Port, DHT11_Pin, GPIO_PIN_RESET); DHT11_Delay_us(18000); // 主机拉高20-40us HAL_GPIO_WritePin(DHT11_GPIO_Port, DHT11_Pin, GPIO_PIN_SET); DHT11_Delay_us(30); // 切换为输入模式 GPIO_InitTypeDef GPIO_InitStruct {0}; GPIO_InitStruct.Pin DHT11_Pin; GPIO_InitStruct.Mode GPIO_MODE_INPUT; GPIO_InitStruct.Pull GPIO_PULLUP; HAL_GPIO_Init(DHT11_GPIO_Port, GPIO_InitStruct); // 等待传感器响应 if (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) GPIO_PIN_SET) return 1; DHT11_Delay_us(80); if (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) GPIO_PIN_RESET) return 2; DHT11_Delay_us(80); // 读取40位数据 for (i 0; i 5; i) { buf[i] DHT11_ReadByte(); } // 校验和 if (buf[0] buf[1] buf[2] buf[3] ! buf[4]) return 3; *humi buf[0]; *temp buf[2]; return 0; // 成功 }常见问题排查一直读取失败返回非0首先检查硬件连接VCC GND DATA确保电源稳定。然后用逻辑分析仪或示波器抓取DATA引脚的波形对照DHT11数据手册的时序图看开始信号、响应信号和数据位的时序是否符合。最常见的原因是微秒延时不准。数据偶尔出错可能是电源干扰或接线过长。尝试在DHT11的VCC和GND之间加一个1040.1uF的滤波电容并尽量缩短DATA线的长度。连续读取间隔太短DHT11两次读取之间需要至少1秒的间隔否则传感器可能不响应。5. 继电器驱动与按键处理稳定控制与交互基础继电器驱动很简单就是控制一个GPIO输出高低电平。关键在于理解你的继电器模块是高电平触发还是低电平触发。// relay.h #define RELAY_ON() HAL_GPIO_WritePin(RELAY_GPIO_Port, RELAY_Pin, GPIO_PIN_RESET) // 假设低电平触发 #define RELAY_OFF() HAL_GPIO_WritePin(RELAY_GPIO_Port, RELAY_Pin, GPIO_PIN_SET) #define RELAY_TOGGLE() HAL_GPIO_TogglePin(RELAY_GPIO_Port, RELAY_Pin) uint8_t RELAY_GetState(void);按键处理稍微复杂点需要消抖。我一般用状态机的方式在定时器中断里扫描既稳定又不阻塞主程序。// key.h typedef enum { KEY_NONE 0, KEY_UP, KEY_DOWN, KEY_MODE, KEY_OK } Key_TypeDef; Key_TypeDef KEY_Scan(void);// key.c // 按键扫描状态机 Key_TypeDef KEY_Scan(void) { static uint8_t key_state[4] {0}; // 每个按键的状态 static uint16_t key_count[4] {0}; // 计数器 Key_TypeDef key_pressed KEY_NONE; GPIO_PinState pin_state; // 扫描每个按键 for (int i 0; i 4; i) { pin_state HAL_GPIO_ReadPin(KEY_GPIO_Port[i], KEY_Pin[i]); switch (key_state[i]) { case 0: // 等待按下 if (pin_state GPIO_PIN_RESET) { // 按键按下低电平 key_state[i] 1; key_count[i] 0; } break; case 1: // 消抖确认 if (pin_state GPIO_PIN_RESET) { key_count[i]; if (key_count[i] 5) { // 持续5个扫描周期如5ms低电平确认按下 key_state[i] 2; // 根据i返回对应的按键值 if (i 0) key_pressed KEY_UP; else if (i 1) key_pressed KEY_DOWN; // ... 其他按键 } } else { key_state[i] 0; // 抖动回到初始状态 } break; case 2: // 等待释放 if (pin_state GPIO_PIN_SET) { // 按键释放 key_state[i] 0; } break; } } return key_pressed; // 返回本次扫描到的按键短按 }把这个KEY_Scan()函数放在一个每1ms或5ms执行一次的定时器中断回调函数里主程序只需要检查返回值即可。6. 核心控制逻辑与状态机设计这是项目的“大脑”。我们需要定义几个关键变量和状态target_temp目标温度阈值通过按键增减。current_temp当前温度来自DHT11。hysteresis回差迟滞。比如目标25度回差2度。那么温度高于27度时打开制冷继电器吸合低于23度时才关闭。防止继电器在临界点频繁开关。control_mode控制模式比如自动模式根据温度自动控制、手动模式强制开/关。relay_status继电器当前状态。主控逻辑controller.c可以这样设计void Controller_Update(void) { Key_TypeDef key KEY_Scan(); // 1. 处理按键更新阈值和模式 switch (key) { case KEY_UP: target_temp; break; case KEY_DOWN: target_temp--; break; case KEY_MODE: control_mode (control_mode MODE_AUTO) ? MODE_MANUAL : MODE_AUTO; break; case KEY_OK: // 手动模式下切换继电器状态 if (control_mode MODE_MANUAL) { relay_status !relay_status; if (relay_status) RELAY_ON(); else RELAY_OFF(); } break; default: break; } // 2. 自动模式下的温度控制逻辑 if (control_mode MODE_AUTO) { if (current_temp (target_temp hysteresis)) { // 温度过高需要制冷假设继电器控制风扇 if (relay_status 0) { // 如果继电器是关闭状态 RELAY_ON(); relay_status 1; } } else if (current_temp (target_temp - hysteresis)) { // 温度过低关闭制冷 if (relay_status 1) { // 如果继电器是打开状态 RELAY_OFF(); relay_status 0; } } // 温度在回差范围内保持原状态 } // 3. 可以在这里更新显示如果有OLED/LCD }然后在主循环里以固定的周期比如每100ms或500ms调用Controller_Update()和DHT11_ReadData()注意DHT11读取间隔要大于1秒。7. 主程序框架与调试要点把上面所有模块整合到main.c中int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_TIM2_Init(); // 用于微秒延时 MX_TIM3_Init(); // 用于10ms定时扫描按键 // ... 其他初始化 uint8_t temperature, humidity; uint32_t last_read_time 0; uint32_t last_control_time 0; while (1) { uint32_t current_time HAL_GetTick(); // 每1秒读取一次DHT11 if (current_time - last_read_time 1000) { if (DHT11_ReadData(temperature, humidity) 0) { current_temp temperature; // 更新全局当前温度 // 可以打印到串口调试 printf(Temp: %d C, Humi: %d %%\n, temperature, humidity); } else { printf(DHT11 Read Error!\n); } last_read_time current_time; } // 每100ms执行一次控制逻辑 if (current_time - last_control_time 100) { Controller_Update(); last_control_time current_time; } // 其他任务... } }调试时优先看这几个点DHT11数据是否正常通过串口打印温度和湿度看数值是否在合理范围比如室内10-35度。如果一直是0或255检查时序和接线。按键响应是否灵敏按下按键看串口打印的键值或阈值变化是否正确。如果按键不灵检查上拉电阻和消抖逻辑。继电器动作逻辑用手改变温度比如用手握住DHT11升温观察继电器是否在设定的阈值点附近动作。用万用表测量继电器输出端子的通断来确认。模式切换测试自动模式和手动模式切换是否正常手动模式下按键能否强制控制继电器。8. 从原型到实用的优化建议跑通基本功能后可以考虑下面这些优化让项目更接近一个实用的产品阈值存储使用STM32的内部Flash如EEPROM模拟或外置AT24C02这类EEPROM芯片把用户设定的目标温度、回差值、控制模式等参数保存下来掉电不丢失。显示界面添加一个OLED或LCD屏实时显示当前温度、目标温度、继电器状态、控制模式等信息交互体验更好。参数校准DHT11有±1℃的误差如果要求高可以做一个简单的软件校准。比如读取一个已知准确温度计的值计算偏移量。通信功能增加串口通信可以将温度数据上报给电脑上位机或者接收上位机的控制指令实现远程监控。更复杂的控制算法简单的开关控制Bang-Bang Control在临界点容易震荡。可以引入更平滑的PWM控制如果继电器支持PWM或者控制的是固态继电器或者实现一个简单的PID控制器让温度控制更平稳。安全性增加温度超限报警比如超过50度强制断开并报警、继电器动作次数统计、看门狗防止程序跑飞等。这个项目麻雀虽小五脏俱全。把它做扎实了你对STM32的GPIO操作、定时器使用、外设驱动、状态机编程和系统调试会有非常直观的理解。下次再做更复杂的项目比如智能台灯、环境监控、小车控制你会发现底层逻辑都是相通的。

相关新闻

扑克牌概率问题解析:对称性与动态规划在数学建模中的应用

扑克牌概率问题解析:对称性与动态规划在数学建模中的应用

1. 项目概述:从一副扑克牌引发的数学建模实战最近在整理一些经典的数学建模案例时,一个关于扑克牌游戏的“趣味问题”反复被提及。这个问题初看简单,甚至像一道脑筋急转弯,但当你真正尝试用数学语言去描述和解决它时,会…

2026/8/17 6:56:25 阅读更多 →
BK7238物联网芯片开发全解析:Wi-Fi/BLE双模、低功耗设计与实战指南

BK7238物联网芯片开发全解析:Wi-Fi/BLE双模、低功耗设计与实战指南

1. 项目概述:为什么BK7238值得关注?在物联网设备开发领域,选对一颗核心的无线通信芯片,往往意味着项目成功了一半。最近,我在为一个低功耗智能家居传感器项目选型时,深入研究了博通集成(Beken&a…

2026/8/17 6:56:25 阅读更多 →
BK7238双模物联网芯片开发全攻略:从规格书解读到低功耗设计实战

BK7238双模物联网芯片开发全攻略:从规格书解读到低功耗设计实战

1. 项目概述:深入解读BK7238这颗“小而美”的无线连接芯片最近在捣鼓一些智能家居和低功耗传感的小玩意儿,选型时又绕不开无线连接方案。Wi-Fi直连云端固然方便,但功耗一直是个头疼的问题;BLE(蓝牙低功耗)倒…

2026/8/17 6:56:25 阅读更多 →

最新新闻

【信息科学与工程学】【通信工程】第七十九篇 网络规划中的方案中的数学建模01

【信息科学与工程学】【通信工程】第七十九篇 网络规划中的方案中的数学建模01

编号 学科 网络领域 产品 核心知识点与数学方程式 在网络设计中的详细作用 理论/工程依据 关联知识和法律法规 1 概率论与数理统计​ 流量工程与负载均衡​ 路由器、交换机、SDN控制器 核心知识点:​ 排队论 方程式:​ M/M/1队列平均等待时间 W=μ(μ−λ)λ​ 变…

2026/8/18 11:09:19 阅读更多 →
ncm 文件怎么打开?免费开源的 ncmdumpGUI 让 ncm 格式转换一键无损还原 mp3/flac

ncm 文件怎么打开?免费开源的 ncmdumpGUI 让 ncm 格式转换一键无损还原 mp3/flac

ncm 文件怎么打开?免费开源的 ncmdumpGUI 让 ncm 格式转换一键无损还原 mp3/flac 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你手机里那些从网…

2026/8/18 11:09:19 阅读更多 →
5分钟玩转OneMore标签:给OneNote笔记装一套离线检索系统

5分钟玩转OneMore标签:给OneNote笔记装一套离线检索系统

5分钟玩转OneMore标签:给OneNote笔记装一套离线检索系统 【免费下载链接】OneMore A OneNote add-in with simple, yet powerful and useful features 项目地址: https://gitcode.com/gh_mirrors/on/OneMore 笔记越攒越多,找一条三个月前的灵感却…

2026/8/18 11:09:19 阅读更多 →
Git Worktrees 详解:多分支并行开发与高效上下文切换

Git Worktrees 详解:多分支并行开发与高效上下文切换

这次我们来看一个 Git 的高级功能:Git worktrees。对于需要同时处理多个分支、并行开发或快速切换上下文的开发者来说,这个功能能极大提升效率。它不是一个新的工具,而是 Git 内置的一个强大但常被忽略的特性。简单来说,它允许你在…

2026/8/18 11:09:19 阅读更多 →
免费开源乐谱识别工具Audiveris全攻略:从纸质谱到数字谱的音乐数字化实战

免费开源乐谱识别工具Audiveris全攻略:从纸质谱到数字谱的音乐数字化实战

免费开源乐谱识别工具Audiveris全攻略:从纸质谱到数字谱的音乐数字化实战 【免费下载链接】audiveris Latest generation of Audiveris OMR engine 项目地址: https://gitcode.com/gh_mirrors/au/audiveris 打开这篇文章的你,十有八九被同一个问题…

2026/8/18 11:09:19 阅读更多 →
桌面版和加载项怎么选:察元AI 一套引擎四档 SKU 选购指南

桌面版和加载项怎么选:察元AI 一套引擎四档 SKU 选购指南

经常有人问我:单位要上 AI 文档工具,「察元AI文档助手」这个 WPS 加载项和你提到的察元桌面版是什么关系?是不是两个产品二选一?答案是:都不是。察元是一套引擎四个档位,从个人到上千人规模各取所需。这篇把…

2026/8/18 11:08:19 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →