打印
[技术问答]

华大HC32F460芯片Flash操作遇到的问题

[复制链接]
933|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Aqst666|  楼主 | 2021-5-9 16:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
en_result_t EFM_SectorErase(uint32_t u32Addr)
{
    uint8_t u8tmp;
    uint16_t u16Timeout = 0u;
    en_result_t enRet = Ok;
    DDL_ASSERT(IS_VALID_FLASH_ADDR(u32Addr));
    EFM_ClearFlag(EFM_FLAG_WRPERR | EFM_FLAG_PEPRTERR | EFM_FLAG_PGSZERR |
                  EFM_FLAG_PGMISMTCH | EFM_FLAG_EOP | EFM_FLAG_RWERR);
    u8tmp = (uint8_t)M4_EFM->FRMC_f.CACHE;
    M4_EFM->FRMC_f.CACHE = Disable;
    EFM_ErasePgmCmd(Enable);
    EFM_SetErasePgmMode(SectorErase);

    *(uint32_t*)u32Addr = 0x12345678u;
    while(1ul != M4_EFM->FSR_f.RDY)
    {
        u16Timeout++;
        if(u16Timeout > 0x1000u)
        {
            enRet = ErrorTimeout;
        }
    }
    EFM_ClearFlag(EFM_FLAG_EOP);
    EFM_SetErasePgmMode(ReadOnly1);
    EFM_ErasePgmCmd(Disable);
    M4_EFM->FRMC_f.CACHE = u8tmp;
    return enRet;
}
单步运行到这句话 就会卡死  
   *(uint32_t*)u32Addr = 0x12345678u;


写256字节数据  会多出来四个字节

使用特权

评论回复
沙发
martinhu| | 2021-5-10 13:32 | 只看该作者
F460的扇区大小是8K,楼主看看是不是给的页擦除的地址不对?把代码区擦除了?
另外,多出4字节,应该是写操作代码的问题。

使用特权

评论回复
板凳
Aqst666|  楼主 | 2021-5-12 10:37 | 只看该作者
谢谢楼上大哥   已发现问题,原因是多写了一个校验数据,代码是抄的 没有理解透彻 感谢您的解答

使用特权

评论回复
地板
单片小菜| | 2021-5-12 14:56 | 只看该作者
解决问题,就好办多了。

使用特权

评论回复
5
两只袜子| | 2021-5-12 16:50 | 只看该作者
哈哈,恭喜恭喜

使用特权

评论回复
6
huquanz711| | 2021-5-12 18:39 | 只看该作者
感谢楼主的分享经验

使用特权

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

本版积分规则

2

主题

5

帖子

0

粉丝