前言
笔者在学习《STM32CubeMX高效开发教程》这本书的第11章RTC时,完成第三个示例项目后(经过入侵检测),重新运行第二个示例项目,发现已经无法正常工作了,其核心问题就在于RTC备份寄存器无法写入。在探索了很久以后,发现了解决方法。
查阅参考手册
在F407中文参考手册的第604页讲到,发生入侵检测事件以后,TAMPxF被置位,如果没有复位,那么该寄存器就一直保持复位。而这里的“该寄存器”正是复位寄存器。
出现这个问题,同时也是因为TAMPxF不会因为按下复位键,或断电等硬件方式复位,而必须经过手动软件复位,这就涉及到了寄存器的操作。
操作寄存器
操作寄存器的关键就在两个:一、找到要操作的寄存器的位的地址;二、赋予期望的值(0或1)
在参考手册《存储器映射》这一节中,可以根据左边界地址得到基地址,即0x4000 2800
点击蓝色字体,就可以跳转到《RTC寄存器映射这一小节》,可得到偏移地址,即0x0C