DA14585 SDK 6.0.22.1401嵌入式开发全链路指南
简介本资源为Dialog Semiconductor DA14585系列蓝牙低功耗SoC专用SDK开发包v6.0.22.1401面向嵌入式IoT开发者、可穿戴设备工程师及BLE固件初学者用于快速构建低功耗蓝牙应用、协议栈移植与硬件驱动开发。压缩包共1441个文件涵盖352个C源码、776个头文件.h、30个Keil工程.uvprojx/.uvoptx、47个二进制镜像.bin/.hex、22个链接脚本.sct/.lds及配套ICF生成脚本、量产测试固件如prod_test_585.bin和静态库da14585_586.a等完整支撑DA145xx全系芯片的编译、调试与烧录全流程。资源大小15.7MB结构规范含示例项目、API文档框架与基础工具链配置。已有471人学习下载适合需直接上手DA14585 BLE开发、理解SDK目录组织逻辑、复用官方驱动模块及开展量产测试验证的实践型开发者。1. DA14585 SDK 6.0.22.1401不是“拿来就能跑”的蓝牙协议栈而是需要亲手拧紧每一颗螺丝的嵌入式黑匣子你拿到SDK-6.0.22.1401.zip解压后看到projects/下密密麻麻的ble_app_开头文件夹心里一热——“终于有官方例程了”结果make一敲报错ERROR: Cannot find DA14585 device in JTAG chain换台电脑再试又卡在keil: undefined symbol arch_set_sleep_mode好不容易烧进芯片手机连不上服务Wireshark 抓包一看连 ADV_IND 都没发出来。这不是 SDK这是套带说明书的迷宫。DA14585 是 Dialog现 Renesas推出的超低功耗 BLE SoC而这个 SDK 版本6.0.22.1401是其生命周期中最后一个完整支持 Keil MDK-ARM v5.27 与 Segger J-Link V6.42 的稳定分支它不兼容新 IDE 的默认配置也不自动适配现代 Windows 10/11 的 USB 调试驱动策略。它适合谁适合正在维护某医疗贴片设备、某工业传感器节点、或某高校低功耗通信课程设计的工程师——你得懂寄存器级唤醒流程、能改.sct分散加载脚本、敢动arch_system.c里的时钟树初始化顺序。它不是教学玩具是产线级代码基线所有 BLE 5.0 以下特性包括私有广播、GATT 多连接、OTA 升级框架都已固化在ble_stack模块里但每一块砖都得你自己砌。2. 从 ZIP 到可烧录 HEX环境链路必须闭环缺一不可2.1 硬件准备J-Link、DA14585 EVK 与供电的三重校验DA14585 对调试接口电平极其敏感。常见翻车点不是代码写错而是硬件握手失败。必须确认三点J-Link 型号为J-Link EDU Mini 或 J-Link BASEV6.42 或 V6.44 固件J-Link PRO 或新版 V6.50 固件会因 SWD 时序微调导致JTAG scan chain detection failedEVK 板跳线JP1VDD_SEL必须置于3.0V 档非 1.8V否则DA14585内部 LDO 无法启动J-Link 读不到 Device ID使用原装 Micro-USB 数据线非充电线且 PC 端 USB 口需提供 ≥500mA 电流——曾有 A 同学用笔记本 USB-C 扩展坞供电导致J-Link Commander中exec flash_erase命令执行一半中断芯片变砖。提示执行JLinkExe -device DA14585 -if SWD -speed 1000后若返回Found SW-DP with ID 0x0BB11477说明物理链路通若卡在Connecting to target via SWD...立即检查 JP1 和 USB 供电。2.2 工具链版本锁定Keil MDK 必须是 v5.27Build 279该 SDK 的build\keil\目录下所有.uvprojx文件均硬编码依赖 Keil v5.27 的 ARMCC 编译器行为。v5.30 会触发error: #137: expression must be a modifiable lvalue因__packed结构体成员对齐规则变更。安装步骤卸载所有 Keil 版本安装MDK527.exe官方存档版非官网最新手动覆盖ARM\ARMCC\Bin\armcc.exe为armcc.exe.bak并复制 SDK 包内tools\armcc_v5.27\armcc.exe过去SDK 自带编译器副本经 Dialog QA 验证在 Keil →Options for Target → C/C → Misc Controls中添加--c99 --no_multibyte_chars否则ble_att.h中 Unicode 字符宏报错。2.3 工程导入与路径修复三个关键宏定义不能错打开projects\target_apps\ble\ble_app_peripheral\keil\ble_app_peripheral.uvprojx后必须手动修正Options for Target → C/C → Define中确保含DA14585, __UVISION_VERSION527, CFG_DEVELOPMENTOptions for Target → Asm → Define中添加DA14585汇编层需识别芯片型号Options for Target → Linker → Scatter File指向projects\target_apps\ble\ble_app_peripheral\keil\scatter\DA14585_scatter.sct—— 此文件定义了 ROM/RAM 分区若误用DA14531_scatter.sctkeil编译通过但烧录后复位即死机因ROM_CODE地址越界。2.4 编译与烧录全流程命令行验证即使 Keil GUI 能编译也建议用命令行复现以排除 IDE 缓存干扰# 进入工程目录 cd projects\target_apps\ble\ble_app_peripheral\keil # 调用 Keil 编译器路径需替换为你的 Keil 安装路径 C:\Keil_v5\UV4\UV4.exe -b ble_app_peripheral.uvprojx -t DA14585 # 生成 HEXKeil 默认输出 AXF需额外转换 C:\Keil_v5\ARM\ARMCC\Bin\fromelf.exe --i32combined --output ble_app_peripheral.hex ble_app_peripheral.axf # 使用 J-Link 烧录注意必须指定 -if SWD -speed 1000 JLinkExe -device DA14585 -if SWD -speed 1000 -autoconnect 1 -CommanderScript loadfile ble_app_peripheral.hex; r; g; exit逻辑说明-b参数强制命令行构建-t DA14585指定目标设备模板fromelf.exe是 ARM 官方格式转换工具--i32combined生成 Intel Hex 格式兼容所有烧录器J-Link 脚本中r; g;表示复位并运行避免烧录后需手动按板载 RESET 键。3. BLE 协议栈初始化失败的五大血泪坑现象、根因与硬核解法3.1 现象main()执行到app_main()就卡死串口无任何日志原因DA14585的SystemInit()函数中SetSysClock()默认尝试启用外部 32kHz 晶振XTAL32K但 EVK 板默认焊接的是内部 RC 振荡器IRC32K。若未在system_da14585.c中注释掉CLK-CLK_AMBA_REG | CLK_AMBA_REG_XTAL32K_EN_Msk;芯片将无限等待晶振起振超时进入while(1)。解决打开platform\da14585\system\system_da14585.c定位void SetSysClock(void)函数在// Enable XTAL32K注释下方将整段CLK-CLK_AMBA_REG | ...行用/* */包裹禁用并取消// Use IRC32K as system clock source下方CLK-CLK_AMBA_REG ~CLK_AMBA_REG_XTAL32K_EN_Msk;的注释。3.2 现象Keil 编译通过但 J-Link 烧录时报Error: Flash download failed – Target DLL has been cancelled原因SDK 6.0.22.1401 的flash_programmer工程使用旧版JLinkARM.dllv6.42而你系统 PATH 中存在 v6.50 的同名 DLLKeil 加载时优先取新版导致 Flash 算法不匹配。解决在 Keil 安装目录C:\Keil_v5\ARM\Flash\下找到Dialog\DA14585\DA14585.FLM文件用记事本打开确认其[COMMON]段中DllNameJLinkARM.dll未被修改然后将C:\Keil_v5\ARM\Flash\Dialog\DA14585\添加到系统环境变量PATH的最前端并重启 Keil。3.3 现象手机扫描到设备名如DA14585_PERIPHERAL但连接后立即断开Log 显示ATT_ERROR_INSUFFICIENT_AUTHENTICATION原因ble_app_peripheral示例默认启用配对Bonding但user_config.h中CFG_SEC_REQ宏设为SECURITY_REQUESTED而手机端未完成配对流程就发起 GATT 读写。解决打开projects\target_apps\ble\ble_app_peripheral\inc\user_config.h将#define CFG_SEC_REQ (SECURITY_REQUESTED)改为#define CFG_SEC_REQ (SECURITY_NOT_REQUIRED)若需安全连接必须在app_sec.c中实现app_sec_request_handler()并调用gapc_bond_req_ind()而非仅靠宏开关。3.4 现象ble_app_proximity工程编译报错undefined reference to proxm_update_alert_level原因proxm服务依赖ble_service模块但ble_app_proximity.uvprojx的Options for Target → Linker → Object/Library中未添加ble_service.lib路径。解决在 Keil 中右键工程 →Options for Target → Linker → Object/Library→ 点击Add选择projects\libraries\ble_service\keil\ble_service.lib同时在C/C → Include Paths中添加projects\libraries\ble_service\inc。3.5 现象使用ble_app_battery时ADC 读取电压始终为 0BATT_LEVEL_UPDATE_INTERVAL设置无效原因DA14585的 ADC 通道 0BATMON需在arch_system.c中显式使能ANA-ANA_CTRL_REG | ANA_CTRL_REG_ADC_EN_Msk;但 SDK 示例中此行被注释。解决打开platform\da14585\arch\arch_system.c在void arch_init(void)函数末尾arch_ble_init();之后插入// Enable ADC for battery monitoring ANA-ANA_CTRL_REG | ANA_CTRL_REG_ADC_EN_Msk; // Configure ADC channel 0 for BATMON ANA-ANA_ADC_CTRL_REG (ANA_ADC_CTRL_REG_ADC_CHN_Msk (0 ANA_ADC_CTRL_REG_ADC_CHN_Pos)) | (ANA_ADC_CTRL_REG_ADC_RES_Msk (2 ANA_ADC_CTRL_REG_ADC_RES_Pos));参数说明ADC_CHN0指定电池监测通道ADC_RES2表示 10-bit 分辨率08bit, 19bit, 210bit精度越高采样时间越长此处取平衡值。4. GATT 服务定制实战从添加自定义 Characteristic 到 OTA 升级框架打通4.1 在ble_app_peripheral中注入自定义服务四步原子操作假设需添加一个名为MySensor的服务含TemperatureRead、HumidityNotify两个 Characteristic。Step 1定义 UUID 与属性在projects\target_apps\ble\ble_app_peripheral\inc\user_service.h中添加// 128-bit UUID for MySensor service #define MYSENSOR_SERVICE_UUID_128 {0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF,0x00} // 16-bit UUID for Temperature characteristic #define TEMP_CHAR_UUID 0x2A6E // 16-bit UUID for Humidity characteristic #define HUMID_CHAR_UUID 0x2A6FStep 2声明服务结构体在user_service.c中定义// Temperature Characteristic value (16-bit signed) static uint16_t temp_val 2500; // 25.00°C // Humidity Characteristic value (16-bit unsigned) static uint16_t humid_val 4500; // 45.00% // GATT database definition const struct gatt_db_att mysensor_att_db[] { // Service Declaration [MYSENSOR_IDX_SVC] {ATT_UUID_16_LEN, ATT_UUID_SERV_PRI, PROPERTY_READ, 0, 0}, // Temperature Characteristic Declaration [MYSENSOR_IDX_TEMP_CHAR] {ATT_UUID_16_LEN, ATT_UUID_CHAR_DECL, PROPERTY_READ, 0, 0}, // Temperature Characteristic Value [MYSENSOR_IDX_TEMP_VAL] {ATT_UUID_16_LEN, TEMP_CHAR_UUID, PROPERTY_READ, 0, (uint16_t)temp_val}, // Humidity Characteristic Declaration [MYSENSOR_IDX_HUMID_CHAR] {ATT_UUID_16_LEN, ATT_UUID_CHAR_DECL, PROPERTY_READ | PROPERTY_NOTIFY, 0, 0}, // Humidity Characteristic Value [MYSENSOR_IDX_HUMID_VAL] {ATT_UUID_16_LEN, HUMID_CHAR_UUID, PROPERTY_READ | PROPERTY_NOTIFY, 0, (uint16_t)humid_val}, // Client Characteristic Configuration Descriptor (for Notify) [MYSENSOR_IDX_HUMID_NTF_CFG] {ATT_UUID_16_LEN, ATT_UUID_CHAR_CLIENT_CONFIG, PROPERTY_READ | PROPERTY_WRITE_REQ, 0, 0}, };逻辑说明PROPERTY_NOTIFY必须搭配ATT_UUID_CHAR_CLIENT_CONFIG描述符否则手机无法开启通知temp_val是值地址SDK 栈通过指针直接读取内存无需回调函数。Step 3注册服务到 BLE 栈在user_service.c的user_svc_init()函数中// Add MySensor service to GATT database struct gatt_svc_desc svc_desc; svc_desc.uuid_type ATT_UUID_128; memcpy(svc_desc.uuid, MYSENSOR_SERVICE_UUID_128, ATT_UUID_128_LEN); svc_desc.start_hdl MYSENSOR_IDX_SVC; svc_desc.end_hdl MYSENSOR_IDX_HUMID_NTF_CFG; gatt_svc_add(svc_desc, mysensor_att_db, sizeof(mysensor_att_db)/sizeof(struct gatt_db_att));参数说明start_hdl和end_hdl是服务在 GATT 数据库中的句柄范围必须与mysensor_att_db[]数组索引严格对应否则手机读取时返回ATT_ERROR_INVALID_HANDLE。Step 4实现 Notify 发送逻辑在user_service.c中添加void mysensor_send_humidity(uint16_t value) { humid_val value; // Send notification to all subscribed clients struct gatt_notify_req *req KE_MSG_ALLOC(GATT_NOTIFY_REQ, TASK_ID_GATTM, TASK_ID_GATTM, gatt_notify_req); req-handle MYSENSOR_IDX_HUMID_VAL; req-length sizeof(uint16_t); memcpy(req-value, humid_val, sizeof(uint16_t)); ke_msg_send(req); }调用时机在 ADC 采样完成中断中调用mysensor_send_humidity(humid_raw)即可触发通知。4.2 OTA 升级框架复用ble_app_ota的三大改造点ble_app_ota是 SDK 内置的空中升级模板但默认只支持DA14585的主 Flash0x00000000~0x0001FFFF需扩展至双 BankBank A/B以支持无缝升级。改造点 1修改 Flash 分区表编辑projects\target_apps\ble\ble_app_ota\keil\scatter\DA14585_scatter.sct将ER_FLASH段拆分为ER_FLASH_A 0 { *(InRoot$$Sections) .text 0 *(.text) ... *(.data) } ER_FLASH_B 0x00020000 { *(.ota_image) }逻辑说明ER_FLASH_A存放当前运行固件0x00000000 起ER_FLASH_B为 OTA 接收区0x00020000 起大小需 ≥ 主程序 HEX 文件尺寸。改造点 2启用 Bank 切换标志在ble_app_ota.c的ota_start()函数中添加// Set Bank B as active after successful OTA NVDS_PUT(NVDS_TAG_OTA_BANK, (void*)bank_b_flag, sizeof(uint8_t)); // Trigger hardware reset to boot from Bank B NVIC_SystemReset();参数说明NVDS_TAG_OTA_BANK是 SDK 预留的 NVDS 标签用于存储启动 Bank 标识NVDS_PUT将bank_b_flag1写入 FlashBootloader 读取后跳转至 Bank B 执行。改造点 3定制 Bootloader 启动逻辑SDK 未提供源码 Bootloader但bootloader.bin已预编译在projects\bootloader\da14585\bin\。需用nrfutil工具将其合并到最终 HEX# 合并 bootloader app C:\Keil_v5\ARM\ARMCC\Bin\fromelf.exe --i32combined --output bootloader_app.hex bootloader.bin ble_app_ota.hex注意bootloader.bin必须与 SDK 版本严格匹配6.0.22.1401 对应bootloader_da14585_v6.0.22.1401.bin混用会导致启动失败。5. 信号链路深度验证用逻辑分析仪抓取 RF 波形定位广播/连接失败真因5.1 硬件连接PA_OUT 引脚与逻辑分析仪的阻抗匹配DA14585的 RF 输出引脚PA_OUTGPIO P0_3在 2.4GHz 频段输出功率约 4dBm直接接逻辑分析仪 50Ω 输入会严重失配导致波形畸变甚至损坏探头。正确做法使用10dB 衰减器50Ω 输入/输出串联在 PA_OUT 与逻辑分析仪之间逻辑分析仪通道设置为AC 耦合、500MHz 带宽、1GS/s 采样率触发条件设为Rising Edge 100mV避免噪声误触发。5.2 解析广播包时序从ADV_IND到SCAN_RSP的毫秒级窗口执行ble_app_peripheral后用 Saleae Logic 抓取波形关键观察点时间点事件正常表现异常表现T0ADV_IND起始脉冲宽度 ≈ 120μs含前导码接入地址100μsble_gap_adv_start()未正确配置adv_dataT01.5msSCAN_REQ响应窗口逻辑分析仪显示PA_OUT电平保持高空闲持续低电平scan_rsp_data为空或长度超限≤31字节T02.5msSCAN_RSP发送脉冲宽度 ≈ 80μs含接入地址响应数据无脉冲gapc_scan_req_ind()未被调用检查CFG_SCAN_RSP_EN宏是否启用提示若ADV_IND正常但SCAN_RSP缺失在app_gap.c中检查gapc_scan_req_ind_handler()是否返回KE_MSG_CONSUMED否则消息被丢弃。5.3 连接建立阶段 RF 波形诊断CONNECT_REQ与LL_DATA的握手节奏成功连接后PA_OUT应呈现规律性短脉冲每个连接事件一次连接事件间隔CONN_INTERVALSDK 默认 32ms0x0020波形上相邻脉冲间距应为 32±2ms每个事件内数据包数DA14585支持单事件多包Multi-PDU若conn_param_update_req中max_tx_num设为 3则一个连接事件内应出现 3 组脉冲每组含 LL_HEADERPAYLOAD异常模式脉冲间隔忽长忽短如 32ms→120ms→32ms表明LL层发生Connection Supervision Timeout需检查conn_sup_to参数单位10ms默认 400即 4s若设为 1001s则易超时。5.4 用 Wireshark nRF Sniffer 验证协议栈行为比逻辑分析仪更懂 BLE逻辑分析仪看“有没有”Wireshark 看“对不对”。需配合 Nordic nRF52840 Sniffer Dongle将 Sniffer Dongle 插入 PC运行nRF Sniffer for Bluetooth LE在 Wireshark 中选择nRF52840接口Filter 输入btle.advertising_header.pdu_type 0x00只看 ADV_IND关键字段验证Advertising Address应与DA14585的 BD_ADDR烧录时写入 OTP一致Advertising DataFlags字节必须含LE General Discoverable Mode0x02否则 iOS 设备不扫描Company Identifier若使用自定义 UUIDAD Structure Type应为0xFFManufacturer Data且Company ID与你注册的 IEEE OUI 匹配。从那以后我每次调试 BLE 连接问题都强制走一遍“逻辑分析仪看 RF 波形 → Wireshark 看协议字段 → Keil 查看ke_msg_queue状态”三步链路。因为DA14585的 BLE 栈是高度状态机驱动的任何一个环节的时序偏差比如gapc_connection_req_ind()处理延迟 5ms都会导致整个连接流程坍塌而这些细节永远藏在波形和协议包的毫秒级抖动里。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Profibus DPV1原始报文解析范例与调试实战

Profibus DPV1原始报文解析范例与调试实战

简介:这份资料面向工业自动化现场调试与通信协议开发人员,聚焦Profibus DPV1原始报文与解析报文的对照学习,帮助读者理解主站与从站之间的交互细节。包内共1个docx文档,压缩包约33KB,以文字与报文表格形式呈现&#xf…

2026/10/15 21:12:16 阅读更多 →
C++项目集成SQLite实战:连接管理、事务优化与性能调优

C++项目集成SQLite实战:连接管理、事务优化与性能调优

2. 核心细节解析与实战要点2.1 连接管理:避开重复打开与资源泄漏初始化数据库后,一个连接(sqlite3*)就是一个进程内的工作会话。不要在每次查询时都重新打开数据库文件,开销大且容易泄漏句柄。推荐的做法是&#xff1a…

2026/10/15 21:12:16 阅读更多 →
AI提示词混入出版正文?人机协作时代的内容质检新防线

AI提示词混入出版正文?人机协作时代的内容质检新防线

最近出版圈有件事让我盯了很久:一本已经下厂的纸质小说,正文里混进了一段校对的 AI 提示词,直到读者拿到手里,翻到某一页,才有人发现不对。我先把这本书称为《独行者》,具体是哪家出版社、哪个团队&#xf…

2026/10/15 21:12:16 阅读更多 →

最新新闻

Redis高频面试题全梳理:从底层原理到高可用架构

Redis高频面试题全梳理:从底层原理到高可用架构

很多准备面试的朋友一提到 Redis,第一反应都是“简单,背一背就完事了”。结果真到了现场,面试官一句“Redis为什么这么快”就能把人问住,再追问一句“那它单线程为什么还能这么快”,很多人就开始语无伦次了。其实Redis…

2026/10/16 23:58:21 阅读更多 →
ArcGIS Sptools工具箱:高效处理空间数据的Python脚本集合

ArcGIS Sptools工具箱:高效处理空间数据的Python脚本集合

简介:ArcGIS Sptools工具箱是一套面向GIS专业人员的ArcGIS插件级扩展工具集,专为提升地理数据批量处理、地图样式定制与辅助分析效率而设计,适用于ArcGIS Desktop/Pro用户及中高级GIS项目开发者。资源包共389个文件,含21个可直接加…

2026/10/16 23:57:20 阅读更多 →
IMS计费标准3GPP TS 32.260详解:离线在线计费与ICID机制

IMS计费标准3GPP TS 32.260详解:离线在线计费与ICID机制

简介:本资源为3GPP TS 32.260 IMS计费技术规范的中文版PDF文档,面向从事移动通信核心网计费系统研发、测试与运维的工程师,以及需要理解IMS计费机制的通信专业学生与研究人员。文档系统梳理了IMS离线计费、在线计费与融合计费三种架构&#x…

2026/10/16 23:53:18 阅读更多 →
VoLTE掉话治理:信令时序与资源生命周期协同优化

VoLTE掉话治理:信令时序与资源生命周期协同优化

简介:本资源是一份聚焦VoLTE掉话根因分析与实战优化的深度技术文档,面向4G/5G无线网络优化工程师、核心网运维人员及通信专业高年级学生,解决VoLTE业务中高频掉话、重建立失败、信令异常等现网典型问题。文档基于广州ATU网格真实测试数据&…

2026/10/16 23:53:18 阅读更多 →
思科校园网课程设计实战:VLAN规划、协议抓包与排错避坑

思科校园网课程设计实战:VLAN规划、协议抓包与排错避坑

简介:基于思科的校园网搭建及网络协议分析课程设计文档,适合计算机网络课程设计、毕业设计或实验报告撰写参考。内容从应用场景和需求分析入手,设计了校园网整体拓扑,重点介绍服务器配置、无线网络部署、各部门路由器与交换机的VL…

2026/10/16 23:52:17 阅读更多 →
贝叶斯网络、HMM与CRF:结构化预测的选型决策图谱

贝叶斯网络、HMM与CRF:结构化预测的选型决策图谱

1. 这不是概念堆砌,而是三条技术路径的“血缘图谱”你翻过不少资料,可能见过这样的描述:“贝叶斯网络是概率图模型的一种”“马尔可夫模型强调无记忆性”“条件随机场擅长序列标注”。但这些定义像贴在玻璃上的标签——看得见,摸不…

2026/10/16 23:51:16 阅读更多 →

日新闻

个人 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/16 21:35:51 阅读更多 →
影刀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/16 21:54:38 阅读更多 →
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 阅读更多 →