尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
STM32数码管RTC时钟显示:原理、代码与KEIL工程实战
简介基于STM32单片机设计的LED数码管RTC时间显示工程是一份可直接编译烧录的KEIL源码程序包。资源面向嵌入式初学者与进阶开发者主要解决通过RTC实时时钟获取时间并利用TM1640驱动芯片控制LED数码管完成天、时、分、秒动态显示的问题。程序采用标准外设库开发主循环中反复读取RTC时间并刷新数码管同时包含8个LED的控制示例便于理解芯片时序与显示驱动逻辑。压缩包共182个文件约4.42MB。核心内容为38个C源码与38个头文件涵盖RTC、TM1640、延时、按键、串口等模块另含Keil工程配置文件.uvproj、.uvopt、编译中间文件.o、.crf、.d以及可直接烧录的HEX文件适合直接打开工程查看学习或二次开发。项目文件结构完整清晰能够帮助读者快速掌握STM32的RTC初始化、时间读取、TM1640通信协议以及数码管段码映射方法。目前该资源已有1584人学习下载对于希望动手实践STM32时钟显示类项目的开发者具有较高的参考价值。1. 从 zip 到上电显示这个 STM32 数码管 RTC 工程能给你什么一个用 STM32 驱动 LED 数码管把 RTC 时间显示出来的 KEIL 工程在单片机项目里是最容易跑通却又不“玩具”的组合RTC 属于芯片内部外设数码管属于最直接可见的输出设备两者串起来既要处理时基、又要处理扫描刷新。正因为这套工程横跨时钟树、GPIO、中断和低功耗几块基础大量做 STM32 板卡评测的工程师和毕设课题都会拿它当起点。这个 zip 里装的其实不只是一个“能显示时间”的 Demo而是一条能复用到温湿度计、分钟倒计时、多路报警器上的完整驱动路径。第一次打开这个包的读者关心的通常无非三件事时间怎么读出来、时间怎么在数码管上稳定显示、芯片断电后时间还能不能保住。下面从原理到排错再到扩展把这个工程拆开讲清楚。2. 先把地基打牢STM32 的 RTC 时基与数码管显示原理很多拿到工程直接烧录的人第一反应是“代码能跑”但一旦换块板子就出现时间不走、显示乱跳、复位后归零这类问题。要理解这个工程的边界先看它依赖的两条核心链路。2.1 为什么 RTC 首选 LSE 外部 32.768kHz 晶振而不是内部 LSISTM32F103 这类芯片提供两个给 RTC 用的时钟源外部低速晶振 LSE32.768kHz和内部低速 RC 振荡器 LSI约 40kHz。工程里默认配的是 LSE原因是 32768 正好等于 2 的 15 次方配合 RTC 预分频器写入 32767就能把输入时钟精确分频到 1Hz秒计数器每秒钟加一。LSI 虽然省掉一颗晶振但它在出厂后误差通常在 1% 到 3% 之间且随温度漂移做时钟显示一天能差十几分钟实用性很差。工程代码里通常会写一段判断备份寄存器标志位的逻辑它的作用是只在上电第一次配置 RTC之后每次复位都跳过重新初始化。原因是 STM32 的 RTC 和备份寄存器位于后备供电域只要 VBAT 引脚有电或者主电源 VDD 没有掉RTC 计数器就不会被系统复位清掉。常见做法是用 BKP_DR1 写入一个魔法数比如 0xA5A5判断它是否等于这个值void RTC_Config(void) { // 备份寄存器里的标志位不等于约定值说明是首次上电需要完整初始化 if (BKP_ReadBackupRegister(BKP_DR1) ! 0xA5A5) { RCC_LSEConfig(RCC_LSE_ON); // 打开外部低速晶振 while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) RESET); // 等待起振 RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); // RTC 时钟源选 LSE RCC_RTCCLKCmd(ENABLE); // 使能 RTC 时钟 RTC_WaitForSynchro(); // 等待寄存器同步 RTC_WaitForLastTask(); RTC_SetPrescaler(32767); // 32768Hz 分频后得到 1Hz RTC_WaitForLastTask(); RTC_SetCounter(0); // 从 0 秒开始计 RTC_WaitForLastTask(); BKP_WriteBackupRegister(BKP_DR1, 0xA5A5); // 写入已初始化标志 } else { // 不是第一次上电只需要打开时钟并等待 APB 同步 RCC_RTCCLKCmd(ENABLE); RTC_WaitForSynchro(); RTC_WaitForLastTask(); } }这段代码有几个关键点等待 LSE 起振的 while 循环在晶振焊接不良时会一直卡住这是“程序死在启动阶段”最常见的诱因写入备份寄存器前必须等上一次操作完成否则在连续读写 RTC 寄存器时会读到旧值标志位写入 BKP_DR1 而不是普通 SRAM才能保证掉电后不被清零。注意这里的 LSE 起振等待没有加超时保护实际工程项目里建议加一个计数器超时后自动切换到 LSI 并置错误标志否则板子一旦不焊晶振就无法开机。2.2 数码管动态扫描用视觉暂留换 GPIO 数量LED 数码管每个显示位有 8 个段a 到 g 加小数点 dp如果 4 位时间显示全部用独立 IO 控制需要 8 乘以 4 等于 32 个引脚一颗 LQFP48 的 STM32F103C8T6 根本不够用。所以工程里采用的是动态扫描所有数码管的相同段并联到一起段选线共用 8 个 GPIO每一时刻只点亮其中一位的位选线轮流点亮各位。只要轮询频率高于人眼的闪烁融合频率看起来就是同时亮的。工程的实际刷新节奏一般这样安排用 SysTick 或 TIM 产生 1ms 到 2ms 的定时中断每次中断里只点亮一位6 位数码管一轮完整扫描需要 6 到 12ms等效刷新率约 80 到 160Hz。这个参数对显示效果影响很大刷新率低于 50Hz 时人眼能感知到明显闪烁切换太快则位选三极管来不及完全导通亮度反而下降。下面这个函数是典型的扫描中断处理逻辑void TIM2_IRQHandler(void) { static uint8_t scan_pos 0; // 当前扫描到第几位 uint8_t digit_buf[6]; // 时分秒各拆成两位 if (TIM_GetITStatus(TIM2, TIM_IT_Update) SET) { TIM_ClearITPendingBit(TIM2, TIM_IT_Update); digit_buf[0] time_hour / 10; // 小时的十位 digit_buf[1] time_hour % 10; // 小时的个位 digit_buf[2] time_min / 10; digit_buf[3] time_min % 10; digit_buf[4] time_sec / 10; digit_buf[5] time_sec % 10; // 共阴数码管位选引脚输出高电平选中当前位 // 先熄灭所有位避免切换瞬间出现拖影 GPIO_ResetBits(GPIOB, 0x003F); // 查段码表输出当前位要显示的段 GPIO_Write(GPIOA, seg_table[digit_buf[scan_pos]]); // 点亮当前位 GPIO_SetBits(GPIOB, (uint16_t)(1 scan_pos)); scan_pos; if (scan_pos 6) scan_pos 0; } }代码里必须先“全灭”再点亮下一位否则位选切换的瞬间当前位的段码会串到相邻位产生淡淡的鬼影。这也是动态扫描最容易忽略的细节。2.3 直接 GPIO 驱动和 74HC595 扩展驱动怎么选这个工程通常提供两种驱动方案的其中一种看懂硬件原理图再决定看哪份代码对比项直接 GPIO 驱动74HC595 移位寄存器驱动占用 GPIO 数量段选 8 位选 6 14 个串行数据 3 个DS、SHCP、STCP驱动电流能力需要三极管放大位选电流595 输出脚可直接带 20mA需加限流电阻布线难度8 根段选线要分别拉线板子面积大3 根线串联适合多位数码管刷新时序直接写 GPIO 即可要按 8 位移位再输出锁存适用场景4 到 6 位IO 充裕的板子8 位以上、或主控 IO 紧张对 STM32F103C8T6 这种 48 脚封装我通常建议直接用 GPIO 驱动 6 位以内原因不是 595 不好而是省下的 GPI O 在这个工程里没有其他用途反而多一层时序调试。只有后续要接入按键、LCD、传感器时才值得用 595 把 GPIO 释放出来。595 的发送代码比 GPIO 方式多一个字节串行移位的循环核心思路是把 8 位段码按位从高位到低位逐个送到 DS 引脚每送一位在 SHCP 上产生一个上升沿全部送完后在 STCP 上升沿把数据从移位寄存器打到输出锁存器。需要注意 595 和数码管之间仍需串接 220 到 470 欧姆的限流电阻它不能替代限流功能。3. 把 KEIL 工程拆开源码结构、初始化与显示主循环拿到 zip 包解压后第一件事不是双击工程文件而是先看目录结构。一个规范的 STM32 标准库工程通常按 USER、HARDWARE、SYSTEM、CORE 四层组织每个文件夹承担不同职责这也是这个 zip 内部最常见的布局。3.1 解压后的工程目录里每一层在干什么CORE 放启动文件 startup_stm32f10x_md.s 和内核头文件它负责上电后把向量表、堆栈和时钟初始化之前的环境准备好。SYSTEM 里是 delay、sys、usart 三个基础模块delay 提供微秒和毫秒延时sys 提供时钟配置和中断分组。HARDWARE 放硬件外设驱动led.c、rtc.c、timer.c 都在这里这一层是读者要改的主要区域。USER 放 main.c、stm32f10x_it.c 中断服务函数、以及 keil 工程文件 .uvprojx。打开 KEIL 工程后第一步是检查 Device 选项里选中的芯片型号这个 zip 如果按 STM32F103C8T6 建的工程而你的板子是其他容量型号需要手动改。标准库工程和 STM32CubeMX 生成工程不一样CubeMX 工程在更换芯片型号后重新生成即可标准库工程则要手动确认三处Device 里的型号、C/C 选项卡里 Define 的 STM32F10X_MD、以及 Flash 下载算法里有没有对应容量的编程算法。这里有个常见误区只改了 Device 型号但 Define 里的容量宏没改导致外设寄存器地址或中断向量数量不匹配编译能过但运行后外设异常。F103 型号对应的宏是区分中容量和高容量的关键// KEIL C/C - Define 里的宏决定了标准库编译哪个型号的寄存器定义 // STM32F103C8T6 属于中容量产品必须是 STM32F10X_MD // STM32F103ZET6 属于高容量产品需要改成 STM32F10X_HDF103 全系列共用一份标准库源码正是靠 STM32F10X_MD 这个宏来裁剪不同容量芯片的片上外设地址和中断向量。工程里写错宏是新手改型号后最常见的 RE 错误来源。3.2 RTC 初始化与时分秒的读取RTC 初始化的关键代码在前面已经铺开这里补充用户层的读取逻辑。工程的主循环通常每秒读取一次 RTC 计数器换算成时分秒后交给显示层。换算公式不复杂但 BCD 和十进制的来回转换很容易写反导致数码管显示 0A 这类异常数字// RTC_GetCounter() 返回的是从配置时刻起累计的秒数 uint32_t total_sec RTC_GetCounter(); time_hour (total_sec / 3600) % 24; // 先除 3600 得到小时再对 24 取模保证不过界 time_min (total_sec / 60) % 60; time_sec total_sec % 60;标准库的 RTC_GetCounter 返回的是一个 uint32 计数器不是结构体所以必须自己做换算。换算的先后顺序要注意先整除再取模取模的除数分别是 24 和 60写反了就会出现分钟显示 80 多、小时显示负数这类越界数值。如果想在数码管上显示 24 小时制还是 12 小时制只需要改 (total_sec / 3600) % 24 这句的取模值改成 % 12 后要注意中午和午夜的时间显示需要额外判断上下午不然 12 点会显示成 00 点。3.3 段码表与 GPIO 映射是显示正确的前提段码表是整个工程里“错一个值就全体乱码”的地方。共阴数码管和共阳数码管的段码是取反关系工程里用哪种接法段码表就必须匹配哪种。标准共阴段码如下// 共阴数码管段码从 a 段到 dp 段分别对应 GPIO 的 bit0 到 bit7 // 0-9 的段码 const uint8_t seg_table[11] { 0x3F, // 0: a,b,c,d,e,f 亮共阴时对应 0011 1111 0x06, // 1: b,c 亮 0x5B, // 2: a,b,d,e,g 亮 0x4F, // 3: a,b,c,d,g 亮 0x66, // 4: b,c,f,g 亮 0x6D, // 5: a,c,d,f,g 亮 0x7D, // 6: a,c,d,e,f,g 亮 0x07, // 7: a,b,c 亮 0x7F, // 8: 全亮 0x6F, // 9: a,b,c,d,f,g 亮 };把这段代码烧进共阳数码管的板子显示效果是所有数字的亮灭段正好反转0 会显示成 8 少中间一横的形态。排查这个问题的唯一标准是看原理图查限流电阻接在段选线这边还是公共端那边。共阳管的公共端接 VCC点亮某段需要在段选线输出低电平段码表就需要把上面的值按位取反。3.3.1 小数点显示与时间分隔符的处理RTC 时间的时分秒之间通常用小数点作为视觉分隔符。做法是在分钟数码管的 dp 段上做 1 秒翻转让小数点以 1Hz 频率闪烁模拟传统时钟的秒脉冲。实现方式在扫描函数里加一个标志位每秒切换一次该位的段码额外把最高位置 1// 秒钟为偶数时点亮分隔符奇数时熄灭 // seg_table[digit] | 0x80 表示在段码最高位叠加 dp 段 if (time_sec % 2 0) { GPIOA-ODR seg_table[digit_buf[1]] | 0x80; // 第二位的段码带小数点 }这里的 0x80 对应 dp 段具体是不是最高位取决于段选线接到 GPIOA 的哪几个引脚。工程里如果段选线不是从 bit0 开始的要按实际接线调整这个掩码。3.4 主循环里读时间、扫描显示、处理按键的协作方式主循环的常见写法是 while 循环里做三件事查询秒变化则刷新时间缓存、调用按键扫描、LED 扫描由定时器中断承担。把显示刷新放在中断里、把时间换算放在主循环里是最不容易出错的分工。不要在中断里做除法6 位数码管的逐位除法会拖长中断时间导致其他中断响应延迟。int main(void) { // 中断优先级分组、时钟配置、GPIO 初始化 // RTC 初始化、定时器 2 初始化 while (1) { // 每次循环都读取计数器和上一次对比避免重复刷新缓存 uint32_t current RTC_GetCounter(); if (current ! last_second) { last_second current; // 换算时分秒更新全局变量 ConvertTime(current); } // 按键扫描、蜂鸣器驱动等其他任务 } }这个结构的优势是时间换算只在秒变化时执行扫描中断只做查表和 GPIO 写操作职责清晰也方便后续加入校准按键。常见的错误版本是把秒的换算直接丢进定时器中断中断里如果时间恰好跨越 23:59:59换算和显示会不同步出现 1 秒的毛刺显示。4. 参数怎么调、错怎么查扫描周期、亮度衰减与 KEIL 编译排错这个工程的可调参数不多但每个都牵一发动全身。扫描周期、段码表、限流电阻三者共同决定显示效果而编译阶段的报错往往和工程配置有关和代码逻辑关系不大。4.1 扫描周期和亮度哪个参数该优先动TIM 更新中断的溢出时间等于扫描一位的间隔。以 72MHz 主频定时器预分频 71 为例计数周期 1 微秒设置自动重装值为 2000溢出时间就是 2ms一轮 6 位扫描 12ms刷新率约 83Hz。如果你发现显示有轻微闪烁第一个动作不是把 2ms 改成 500 微秒而是先确认没有其他高优先级中断频繁打断 TIM 中断导致某些位被推迟显示。中断优先级分组里TIM2 的抢占优先级应该高于串口和按键否则串口数据收发时会打断扫描表现就是显示局部变暗。亮度均匀性的问题通常出现在某一位持续偏亮或偏暗。排查方法是用示波器测每一位位选引脚的高电平时间正常情况下 6 位的导通时间应完全一致。如果某一位导通时间比其他位多一倍检查 scan_pos 的递增有没有被其他代码意外改写或者扫描函数里有没有提前 return 的分支。限流电阻是决定整体亮度的物理因素。红色数码管工作电流取 5 到 10mA 时压降约 1.8V按 3.3V 供电计算限流电阻取 (3.3 - 1.8 - 0.7) / 0.008 约 100 欧姆工程里常用 220 欧姆是偏保守但寿命更长的选择。电流过大不只是费电还会让段码 IC 和三极管发热。4.2 KEIL 编译期最常见的三个报错点第一个是Unknown target或missing device本质是 KEIL 没有安装对应芯片的 Device Pack。用 KEIL5 打开旧工程时确认 Pack Installer 里 STM32F1 系列包是否安装这属于环境问题代码再对也编不过。第二个是Error: L6218E: Undefined symbol RTC_GetCounter这是标准库的 .c 文件没有被包含进工程。标准库工程不像 CubeMX 自动把所有源文件加进分组需要手动把 stm32f10x_rtc.c、stm32f10x_gpio.c 这些外设库文件加进 FWLib 分组。这种情况在 zip 工程里尤其常见如果你把工程文件从原目录挪走但没有连同标准库的 src 文件夹一起移动KEIL 找不到源码就报未定义。第三个是烧录时报Flash Download failed - Cortex-M3。先点开 Options for Target 的 Utilities 选项卡确认编程算法里选了 STM32F10x Med-density Flash再确认 Boot0 引脚有没有被拉高如果 Boot0 为高电平芯片会进入系统存储器引导模式而不是正常运行模式SWD 接口能连上但下载后无法运行。4.3 时间不走或复位清零从硬件到软件的排查清单现象排查方向可能的根因上电卡死在 while(RCC_GetFlagStatus(...) RESET)示波器测 LSE 引脚波形晶振没焊好、匹配电容过大、晶振型号不对时间走一会儿就停测 VBAT 电压后备供电没有接主电源掉电后 RTC 停止每次复位时间归零检查 BKP_DR1 写入是否成功PWR 备份域写保护没有关闭显示乱码数字变成乱画线核对共阴共阳类型段码表和硬件接法不匹配前几位亮后几位暗查位选三极管位选驱动电流不够换放大倍数更大的三极管PWR 备份域访问保护是一个隐藏较深的点。BKP_DR 寄存器的写操作前需要关闭写保护否则标志位写不进去每次复位都走完整初始化流程RTC 计数器被重置。标准库写法是PWR_BackupAccessCmd(ENABLE); // 关闭 PWR 备份域写保护 // 之后才能写 BKP_DR1 和操作 BKP 寄存器同理RTC 的配置寄存器也在这块区域所以初始化函数里必须先开 PWR 再访问 RTC。有些精简版工程把这段漏掉在调试器里单步时看起来正常实际独立复位后就走不通。5. 进阶一步用 RTC 闹钟事件做低功耗唤醒显示当这个工程跑稳定之后最值得加的一个功能是让整机进入停机模式由 RTC 闹钟事件定时唤醒并刷新显示平时数码管熄灭以省电。这个语义正好切中 RTC 的硬件特性它独立于 CPU 运行在 STM32 的停止模式下可以继续计时并触发唤醒中断。具体做法是把 RTC 闹钟配置为每秒产生一次事件然后在主循环里判断一段时间无操作后调用 PWR_EnterSTOPMode。STOP 模式下 HSE 和 PLL 关闭CPU 停转但 RTC 的 LSE 时钟不受影响备用的 32.768kHz 晶振本身功耗很低。唤醒后第一件事是重新配置系统时钟因为 PLL 在进入 STOP 前被关闭了不重新初始化时钟的话代码会按内部 8MHz 的默认状态运行延时和外设速度全部错乱。void RTC_Alarm_IRQHandler(void) { if (RTC_GetITStatus(RTC_IT_ALR) ! RESET) { RTC_ClearITPendingBit(RTC_IT_ALR); // 清闹钟中断标志 wakeup_flag 1; // 通知主循环处理唤醒后的工作 } }主循环里做一次完整唤醒流程退出 STOP 后调用 SystemInit 重新配置时钟把 SysTick 重新初始化再让 LED 扫描恢复。需要注意的是停止模式下如果调试器还连着内核会停住无法响应 SWD建议拔掉调试器测试低功耗或把代码里进入 STOP 的逻辑用宏开关包起来。RTC 闹钟中断优先级需要低于系统时钟重新配置的中断否则在时钟不稳时进入中断会触发硬件错误。验证这个进阶功能是否正常的办法测量整机电流正常运行模式下 STM32F103 的电流在毫安级STOP 模式下 LSE 加 RTC 的典型电流在十几微安数码管全灭后看到电流降到微安级才算真正做到位。这里有一个容易踩的细节数码管的段选和位选引脚在进入 STOP 前必须全部输出低电平否则数码管透过 GPIO 内部保护二极管向 VDD 灌电流停止模式的实际电流会比理论值高出一个数量级。最后补一个校准技巧RTC 走时精度取决于 LSE 晶振的负载电容匹配实测一天快 5 秒的板子可以把负载电容从 12.5pF 换到 7pF 试误差方向和高低会有变化。这个方法比在软件里做周期性补偿更治本适合验证固件和硬件是否配合良好。本文还有配套的精品资源点击获取
RELATED

相关推荐

SpeechBrain 声音分类实战:基于 ESC50 数据集的 CNN14 / Conv2D / FocalNet / ViT 多模型训练全解

SpeechBrain 声音分类实战:基于 ESC50 数据集的 CNN14 / Conv2D / FocalNet / ViT 多模型训练全解

SpeechBrain 声音分类实战:基于 ESC50 数据集的 CNN14 / Conv2D / FocalNet / ViT 多模型训练全解 【免费下载链接】speechbrain A PyTorch-based Speech Toolkit 项目地址: https://gitcode.com/GitHub_Trending/sp/speechbrain 本指南以 SpeechBrain 仓库中…

📅 2026/9/15 20:20:43
FMEA-MSR功能分析实战:从监视到响应,避开六大坑

FMEA-MSR功能分析实战:从监视到响应,避开六大坑

做FMEA-MSR项目的时候,最容易被低估、也最容易返工的就是步骤三“功能分析”。我说句实在话,很多团队把MSR当成普通DFMEA的变体来处理,结果功能清单列出来的还是一堆“正常功能”,完全没有把“监视”和“响应”这两条主线拆进去。…

📅 2026/9/15 20:15:43
pytest 在 CI 环境中的自动检测与短摘要输出行为详解

pytest 在 CI 环境中的自动检测与短摘要输出行为详解

pytest 在 CI 环境中的自动检测与短摘要输出行为详解 【免费下载链接】pytest The pytest framework makes it easy to write small tests, yet scales to support complex functional testing 项目地址: https://gitcode.com/GitHub_Trending/py/pytest 导读 本文聚焦…

📅 2026/9/15 20:15:43
MORE NEWS

更多资讯

📰

使用 awesome-codex-skills 中的 pr-review-ci-fix:基于 Composio CLI 的 GitHub/GitLab PR 审查与 CI 自动修复循环

使用 awesome-codex-skills 中的 pr-review-ci-fix:基于 Composio CLI 的 GitHub/GitLab PR 审查与 CI 自动修复循环 【免费下载链接】awesome-codex-skills A curated list of practical Codex skills for automating workflows across the Codex CLI and API. 项…

📰

SpringBoot+Vue课程作业管理系统:可直接运行的全栈项目解析

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

📰

5分钟下载整个抖音博主主页:去水印、增量抓取、自动归档一次搞定

5分钟下载整个抖音博主主页:去水印、增量抓取、自动归档一次搞定 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fall…

📰

FlagEmbedding 微调核心解析:AbsEmbedderRunner 运行器的设计原理与源码级实战

FlagEmbedding 微调核心解析:AbsEmbedderRunner 运行器的设计原理与源码级实战 【免费下载链接】FlagEmbedding Retrieval and Retrieval-augmented LLMs 项目地址: https://gitcode.com/GitHub_Trending/fl/FlagEmbedding 本文以 FlagEmbedding 中 FlagEmbed…

📰

claude-skills 的 API Designer 实战指南:从资源建模到 OpenAPI 3.1 契约交付

claude-skills 的 API Designer 实战指南:从资源建模到 OpenAPI 3.1 契约交付 【免费下载链接】claude-skills 67 Specialized Skills for Full-Stack Developers. Transform Claude Code into your expert pair programmer. 项目地址: https://gitcode.com/GitHu…

📰

MMSegmentation 中的 PointRend:基于点渲染的高效语义分割实现与配置实战指南

MMSegmentation 中的 PointRend:基于点渲染的高效语义分割实现与配置实战指南 【免费下载链接】mmsegmentation OpenMMLab Semantic Segmentation Toolbox and Benchmark. 项目地址: https://gitcode.com/GitHub_Trending/mm/mmsegmentation PointRend&#…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬