【STM32】RTC备份寄存器无法写入问题的解决方法

前言

笔者在学习《STM32CubeMX高效开发教程》这本书的第11章RTC时,完成第三个示例项目后(经过入侵检测),重新运行第二个示例项目,发现已经无法正常工作了,其核心问题就在于RTC备份寄存器无法写入。在探索了很久以后,发现了解决方法。

查阅参考手册

 在F407中文参考手册的第604页讲到,发生入侵检测事件以后,TAMPxF被置位,如果没有复位,那么该寄存器就一直保持复位。而这里的“该寄存器”正是复位寄存器。

出现这个问题,同时也是因为TAMPxF不会因为按下复位键,或断电等硬件方式复位,而必须经过手动软件复位,这就涉及到了寄存器的操作。

操作寄存器

操作寄存器的关键就在两个:一、找到要操作的寄存器的位的地址;二、赋予期望的值(0或1)

在参考手册《存储器映射》这一节中,可以根据左边界地址得到基地址,即0x4000 2800

点击蓝色字体,就可以跳转到《RTC寄存器映射这一小节》,可得到偏移地址,即0x0C

其中第15位TAMP2F表示入侵检测事件2,TAMP1F表示入侵检测事件1,我的F407只有后者,所以只要操作后者即可。基地址+偏移地址就是寄存器地址,再用位运算将第13位置0即可

完美解决~

结语

参考手册是最权威的资料,利用好参考手册,能直接解决好眼下的问题。

在解决这个问题的过程中,笔者在CSDN上发现也有博主遇到了类似的问题,但不幸的是,这种方法并没有解决备份寄存器无法写入的问题。进一步证明的软件复位的正确性。

  • 18
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bahair_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值