您好!
我的闪存组清除子例程遇到了问题。
在开始执行程序或复位后、我始终删除相同的存储器组。
通常情况下、它可以正常工作、但有时 BUSY 标志保持激活状态、并且不会退出子例程。
这是我的子例程。
void cmdFlash_BANK_Erase (uint8_t * flashAddress){
SFRIE1 ~WDTIE; //可禁用 WDT 中断
WDTCTL = WDTPW | WDTHOLD; //停止 WDT
执行{}while (FCTL3 & Busy); //等待!忙
FCTL3 = FWKEY; //清除锁定位
FCTL1 = FWKEY |MERAS; //为段擦除设置擦除位
* flashAddress = 0; //虚拟写入以擦除闪存段
执行{}while (FCTL3 & Busy); //等待!忙
FCTL3 = FWKEY | LOCK; //设置锁定位
SFRIE1 |= WDTIE; //启用 WDT 中断
}
我做了些什么错? 此错误的原因可能是什么?
我可以长时间( 几分钟)使 WDT 保持活动状态、这样在正常操作中它不会影响擦除闪存、如果擦除过程失败、那么微闪存可以恢复吗?
此致、