我在使用 F4 RTC 中的 20x 32 位(电池供电)备份寄存器时遇到一些困难。也就是说,每当我读取它们时,我都会得到 0,写入它们后,用调试器查看寄存器,它们似乎仍然包含 0。
该手册没有说明必须为此启用任何时钟,只是需要断言 RTC_CR 中的 PWR_CR_DBP 位以允许写入。
我的代码基本上是:
backupRegisterBase = (U32 *)(&(RTC->BKP0R)); // treat locations as sequential array of 32 bit registers
....
// reading
regBitSet(&(RTC->CR), PWR_CR_DBP, FALSE); // ensure W bit cleared for backup register write protection
for (U8 i = 0; i < RTC_BKP_NUMBER; i++) // copy the NV registers
backupShadowRegisters[i] = backupRegisterBase[i];
....
// writing
regBitSet(&(RTC->CR), PWR_CR_DBP, TRUE); // W bit set for backup registers
for (U8 i = 0; i < RTC_BKP_NUMBER; i++)
backupRegisterBase[i] = backupShadowRegisters[i];
regBitSet(&(RTC->CR), PWR_CR_DBP, FALSE); // W bit cleared for backup registers protection
不确定我在这里做错了什么。