打印
[STM8]

STM8S005 Flash写入擦除操作失败

[复制链接]
157|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
YONNHOR|  楼主 | 2025-7-11 15:45 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
STM8S005 STVD+COSMIC在进行FLASH擦除或写入操作时,在执行了使能的代码后(FLASH_CR2 |= 0x01; FLASH_NCR2 &= 0xFE;)程序就卡死了。如果把这两行注释掉,就可以完成写入或擦除。Flash操作相应的代码已经放到RAM执行。对比了例程,寄存器的配置等都应该没有问题,现在陷入僵局,不知道问题出在哪里了,请各位大佬帮忙指点指点,不胜感谢!


贴上代码:
#pragma section (FLASH_CODE)
void sFlashBlockErase(INT16U ulBlockAddr)
{
    FLASH_PUKR = 0x56;
    FLASH_PUKR = 0xAE;
    while (!(FLASH_IAPSR & 0x02));

    FLASH_CR2 |= 0x20;
    FLASH_NCR2 &= 0xDF;

    *((volatile INT8U*)ulBlockAddr) = 0;
    while (!(FLASH_IAPSR & 0x04));

    FLASH_IAPSR &= 0xFD;   
}

void   sFlashDataWrite(INT16U wAddress,INT16U length,INT8U *pData)
{
    INT16U bCount;

        FLASH_PUKR = 0x56;
    FLASH_PUKR = 0xAE;
    while (!(FLASH_IAPSR & 0x02));       

    FLASH_CR2 |= 0x01;
    FLASH_NCR2 &= 0xFE;
       
    for (bCount = 0; bCount < length; bCount++)
    {
                *((@near INT8U  *)wAddress+bCount) = ((INT8U)(pData[bCount]));
        while (!(FLASH_IAPSR & 0x05));
    }
    PB_ODR |= 0x0F;
    FLASH_IAPSR &= 0xFD;   
}
#pragma section ()



截图.jpg (113.55 KB )

截图.jpg

使用特权

评论回复
沙发
YONNHOR|  楼主 | 2025-7-12 20:17 | 只看该作者
人呢人呢,来个大佬!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

38

帖子

0

粉丝