主题中讨论的其他器件:MSP430WARE
您好!
因此我一直在观察到这种奇怪的行为、我尝试写入闪存、但写入后立即会导致复位。 经过进一步调查、我们在其中一个论坛中发现"无法在闪存写入期间执行 CPU 指令"。 我们得出的结论是、即使我们 停止了 WDT 、仍需要等待一段时间才能设置 Erase 位、因为我们假设该位允许执行命令来 完全关闭 WDT。 我们查看的示例中的任何地方都没有记录这一点。 我们想知道这是预期行为还是其他潜在问题。 我们使用的是 MSP430ware_3_80_14_01。 下面的代码片段是我们是如何写入闪存的。
WDTCTL = WDTPW + WDTHOLD; // Wait inserted here FCTL1 = FWKEY + ERASE; // Set Erase bit FCTL3 = FWKEY; // Clear Lock bit dest[0] = 0; // Dummy write to erase Flash segment FCTL1 = FWKEY + WRT; // Set WRT bit for write operation for (uint8_t i=0; i<size; i++) { *dest++ = *settings++; } FCTL1 = FWKEY; // Clear WRT bit FCTL3 = FWKEY + LOCK; // Set LOCK bit WDTCTL = WDT_ARST_1000;