关于RTC的玄学bug分析与解决
发表于|更新于|MCU
关于RTC的玄学bug分析与解决
现象:按键长按或者连续按压导致RTC起振异常;
RTC经过的时间读取出来没有变化,或者变化异常
发现:经过一下午复现排查后,按键背面为晶振区域;我摁下按键的手法会按压到晶振区域导致晶振异常;人按下按键时未按压到晶振区域.无法复现;如图
另外该现象体现在如下方面:
使用LSE为时钟源,可能导致初始化失败;看图,BootLoader成功跳转,app初始化错误;
这是错误发生位置,APP的时钟初始化;
对比APP和BL的时钟初始化以及RTC导致失败的原因分析发现.
bl中仅初始化了HSE,app中还初始化了LSE,使用了RTC硬件资源导致初始化失败
检测使用RTC的时间去处理的函数,例如延时等操作,会一并异常.现象为无法继续运行下去
不在按压RTC器件后,可能现象还会出现,形变还没消失;还会出现上述情况.
得等待结束
总结:
不要接触挤压精密器件部分
硬件布线应考虑布局,按键背面不应该放精密器件
文章作者: Liya Huang
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 wdfk-prog的个人博客!
相关推荐

2025-10-03
HAL_DMA_ERROR_FE错误代码解决方法
[toc] 错误场景: 使用STM32F7芯片 使用CUBE生成配置 使用如下链接代码 https://download.csdn.net/download/qq_39665253/77125064 具体为DMA+USART+FIFO(软件编写)+双串口。将接受到的数据发送回串口助手中。 表面上看收发正常。实际应用时(MODBUS多从机应用),总会丢失数据。debug看串口错误中断,发现EeeoreCode错误代码为10如何定位进入错误中断前的代码,看下面链接 https://blog.csdn.net/u013181595/article/details/69523331 定位进入错误中断代码,可找到这段代码。即进入了FIFO错误中断了观察CUEB串口设置,并没有使用FIFO。 CUBE生成代...

2025-11-01
结合QBoot与HPatchLite实现高效差分升级(FOTA)
@[toc] 一、引言:为何需要差分升级?在物联网(IoT)设备的生命周期中,固件空中升级(FOTA)是不可或缺的一环。然而,传统的全量包升级方式意味着每次都需要传输完整的固件,这不仅消耗了大量的网络带宽,延长了升级时间,还对设备的Flash存储空间提出了更高的要求。 **差分升级(Differential Update)**通过只传输新旧固件之间的“差异”部分(即补丁包),极大地减小了升级包的体积,完美地解决了上述痛点。本文将详细介绍如何在RT-Thread操作系统中,利用QBoot引导加载程序和轻量级差分库HPatchLite,构建一套完整、高效且资源可控的差分升级方案。 核心组件架构: 1234567891011121314151617181920212223graph TD subgraph "设备端 (RT-Thread)" A["QBoot (Bootloader)"] B["FAL (Flash抽象层)"] C["hpatchlite-wrapper...

2025-11-01
RT-Thread调试利器:get_irq_priority——像Keil一样在MSH中查看和设置中断优先级
@[toc] 一、引言:嵌入式开发中的中断调试“痛点”在RT-Thread等实时操作系统(RTOS)的开发中,中断(IRQ)是确保系统实时性和响应性的核心机制。然而,随着项目复杂度的提升,中断管理也带来了独特的挑战: 优先级冲突:不合理的中断优先级配置,可能导致高优先级任务被低优先级中断阻塞,破坏系统的实时性。 状态不透明:在设备运行时,我们如何才能直观地了解当前哪些中断被使能?它们的优先级究竟是多少? 动态调试困难:想要测试不同优先级对系统性能的影响,难道只能反复修改代码、编译、烧录吗? 传统上,开发者严重依赖J-Link、ST-Link等硬件调试器,配合Keil MDK或IAR等IDE提供的NVIC(嵌套向量中断控制器)外设视图来解决这些问题。这个视图可以清晰地展示所有中断的状态和优先级。 12345678graph TD subgraph "传统调试流程" A["编写代码<br/>(配置中断优先级)"] --> B["编译 & 烧录"]; B -...

2025-11-01
ART-Pi开发者的福音:一个“宝藏级”实践仓库,点亮你的学习之路
@[toc] 一、引言:从“点灯”到“实战”的鸿沟RTT官方推出的ART-Pi开发板,凭借其强大的STM32H750核心和丰富的板载资源,已成为RT-Thread生态中备受青睐的明星硬件。对于许多开发者而言,官方提供的BSP(板级支持包)是入门的绝佳起点,我们可以轻松地实现点亮LED、打印串口信息等基础操作。 然而,从“Hello World”迈向真正的项目实战,中间往往隔着一道鸿沟: 如何正确地挂载和使用SPI Flash上的文件系统? 如何将设备接入阿里云、OneNet等主流物联网平台? 如何实现一个简单的Web服务器来远程控制设备? … 这些综合性的应用场景,往往需要查阅大量文档、移植各种软件包,并经历漫长的调试过程。今天,我们就要向您隆重推荐一个GitHub仓库,它如同一座桥梁,能帮助您轻松跨越这道鸿沟。这个仓库就是由开发者 wdfk-prog 创建并维护的 ART-PI学习实践库。 仓库地址:https://github.com/wdfk-prog/ART-PI 二、仓库速览:它是什么?这个仓库的本质,是作者在使用ART-Pi进行学习和开发过程中的一份完整、可...

2025-11-01
不止是驱动:一个专心设计的、基于“构建器”模式的传感器管理框架
@[toc] 一、引言:嵌入式传感器开发的“混沌”现状在嵌入式和物联网项目中,传感器是连接物理世界与数字世界的桥梁。然而,随着项目中传感器数量和种类的增加,我们的应用层代码常常会陷入一种“混沌”状态: 驱动接口不一:read_sht3x_temp(), get_ds18b20_value(), trigger_ads1015_conversion()… 每个传感器都有一套专属的API,应用层需要记忆和调用大量不同的函数。 通用逻辑重复:数据采集、量程检查、数据校准、阈值报警等逻辑,在每个传感器的应用代码中被反复实现,冗余且难以维护。 应用与驱动强耦合:应用代码直接调用底层驱动,使得更换一个型号的传感器(例如,用SHT40替换SHT30)可能需要大范围修改上层逻辑。 我们需要的,不仅仅是单个的传感器驱动,而是一个能够将它们有机组织、统一管理、简化应用的框架。今天,我们将要介绍的 wdfk-prog/sensor 项目,正是为此而生。它借鉴了RT-Thread官方传感器的设计,并创新性地引入了“构建器”(Builder)设计模式,为传感器应用开发提供了一套优雅而高效的解决方...

2025-11-01
数据异常值检测利器:Grubbs‘检验的C语言实现
@[toc] 一、引言:为何我们讨厌“离群之马”?在数据处理的各个领域——无论是科学实验、工业传感器读数,还是金融数据分析——我们都期望数据是稳定且一致的。然而,现实中总会出现一些“离群之马”,即异常值(Outliers)。这些数值显著偏离数据集中的其他观测值,可能是由于测量错误、设备故障或真实但罕见事件造成的。 如果不加处理,这些异常值会严重扭曲统计分析的结果,如平均值和标准差,从而导致错误的结论。因此,在数据预处理阶段,科学地识别并处理异常值至关重要。Grubbs’检验(Grubbs’ Test),正是为此而生的一种简单、强大且被广泛应用的统计方法。 1234567graph TD A["原始数据集<br/>(包含潜在异常值)"] --> B{"进行统计分析"}; B -- "不处理异常值" --> C["<font color=red>结果被扭曲<br/>(错误的平均值/标准差)</font>"];...
评论
公告
欢迎光临!有任何问题或想法,欢迎在文章下留言交流,或者通过 关于页面 联系我。






