硬汉嵌入式论坛

 找回密码
 立即注册
查看: 211|回复: 2
收起左侧

[有问必答] F103的RTC在LSI掉电后为何仍然运行?

[复制链接]

3

主题

5

回帖

14

积分

新手上路

积分
14
发表于 2025-12-29 21:59:31 | 显示全部楼层 |阅读模式
本帖最后由 明天的云啊 于 2025-12-30 14:59 编辑

对于F103,主电源掉电的话, LSI应该不运行了吧? 若RTC使用的时钟源是LSI,那么主电源掉电后 应该停止计时 对吧?

但实测 仍然在运行, 3天前拍照记录过, 后来直到今天一直保持着 断主电(断开电源适配器、断开STLINK)、接着纽扣电池 的状态, 今天再上主电源运行,确实计时过了3天,代码看附件,可以用串口输出看时间;

另一个问题,
我想看一下F103的RTC的预分频计数器是增还是减的, 就调用[color=rgb(139, 154, 131) !important]RTC_GetDivider()函数 看,
但明明代码用的是LSI,频率是40KHz,那么要获得1s的时钟,就要设置分频值为"40000-1"(代码也是这么设置的),那么DIV的值应该是在0~39999间变化, 可实际上最大只有32767!
PixPin_2025-12-29_13-19-38.png PixPin_2025-12-29_13-21-02.png
把下图中的if条件分支打开 就可以看DIV值的变化,
PixPin_2025-12-29_13-13-30.png
串口输出结果如下,(请忽略中文乱码)最大才0x7fff,即 32767, 这不是用LSE情况下的分频值吗????
PixPin_2025-12-27_00-45-03.png 1.RTC—万年历实验 - 副本.zip (6.8 MB, 下载次数: 0)


回复

使用道具 举报

3

主题

5

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2025-12-30 01:26:35 | 显示全部楼层
已解决,
原来 我以为用的是LSI, 实际用的一直是LSE !!! 备份域始终没复位, 导致走不到那个切换时钟源的分支,
若要真正的切换时钟源, 两种方法:
1. 修改时钟源的宏定义, 且 拆装VBAT的供电(为了让备份域复位,走那条 会调用修改RTC时钟源函数的分支), 是否按下按键 可随意;
2. 修改时钟源的宏定义, 不拆装VBAT的供电, 但必须按下按键;

另外,为什么我提问的时候 粘贴进去好几张图片, 结果发表后 一个图都没有???
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120427
QQ
发表于 2025-12-31 11:18:23 | 显示全部楼层
明天的云啊 发表于 2025-12-30 01:26
已解决,
原来 我以为用的是LSI, 实际用的一直是LSE !!! 备份域始终没复位, 导致走不到那个切换时钟源的分 ...

谢谢楼主分享

图片问题是论坛的bug,不支持图片的复制粘贴。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-1-9 17:32 , Processed in 0.055803 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表