STM32
直播中

张玲

7年用户 1264经验值
私信 关注
[问答]

STM8L052写EEPROM偶尔会死机的原因?怎么解决?

用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);

回帖(1)

孙喆

2024-4-30 10:47:30
其他的都不管,试下直接解锁写进去看看。没死过
举报

更多回帖

发帖
×
20
完善资料,
赚取积分