用STM8L052做个项目,这几天发现写EEPROM偶尔会死机,产品频繁测试的时候,按键按下后会写一次EEPROM,按键一直按测试,发现不定时会出现一次死机,找不到什么问题,大家帮忙看看。 写EEPROM的字函数 uint8_t EEPROM_Buff_Write (uint16_t addr, uint8_t *buff, uint16_t len) { uint16_t i, count = 0; //WDT_Feed (); //喂狗 //这样字节写的话会成功,但是快写的话失败。而且要全速运行才能写正确 disableInterrupts(); //关全局中断 FLASH_DUKR = 0xAE; //写入第一个密钥 FLASH_DUKR = 0x56; //写入第二个密钥 FLASH_CR2 = 0x00; //标准块编程,会先擦除的 while (((FLASH_IAPSR & 0x08) == 0) && (count < 0xFFFF)) { count ++; //等待解锁完成 } if (count == 0xFFFF)return 0; //WDT_Feed (); //喂狗 for(i = 0; i < len; i++) { *((uint8_t *)(USERPAGE + addr + i)) = buff[i]; while(FLASH_IAPSR_EOP == 0); } FLASH_IAPSR_DUL = 0; //操作完要加锁 enableInterrupts(); //开全局中断 return 1; } 调用时的操作 buff_Count = 0; buff[buff_Count ++] = Manu_Temp / 100; buff[buff_Count ++] = Manu_Temp % 100; EEPROM_Buff_Write (0x0D0, buff, buff_Count); |
测试标签123
IAR FOR ARM和IAR FOR STM8无法共存,
STM8L052,液晶内部电源怎么用?
STM8S103飞线外接芯片,I2C不能得到slaveAddress应答,通讯失败。
STM8S105C6T6 UART2串口,能接收数据,不能发送数据
STM8S105K4 串口2 无奇偶校验,也能接收 偶校验的 数据
在STM8S的IAP使用中断和APP使用中断问题
STM8L151 SMBUS设计
STM8S103F复位异常
STM8L的LCD调试时不亮
放到while里试试看
另外用内部EEPROM时,还需要加延时不?
这个片片,在全局中断关的时候,对看门狗有没有影响?
评分
查看全部评分
放在里面也不行,我已经把看门狗功能去掉了,延时也试过,问题还是解决不了,一直测试的话,偶尔出先要不死机,要不复位
评分
查看全部评分
直接使用库都不行
FLASH_Unlock(FLASH_MemType_Data);
for(i = 0; i < len; i++)
{
FLASH_ProgramByte(USERPAGE + addr + i, *(buff + i));//从0X1000开始寻址
}
FLASH_Lock(FLASH_MemType_Data);
评分
查看全部评分
地址肯定没超出去,我才写到地址250不到点,假如超出的话,每次都应该有问题的
评分
查看全部评分
我也没有解锁很多次啊
要不监测一下电源电压是不是稳定?