边缘天空 发表于 2020-9-11 20:46

HC32L130读写FLASH问题

今天在试验官方例程读写FLASH时,发现当FLASH为0xff时,读写正常,再次对同一地址读写时,程序死在校验循环里(此时该FLASH地址内容为非0XFF),哪位大侠遇到这种情况,请指点一下,万分感谢!
int32_t main(void)
{
    uint32_t          u32Addr    = 0xff00;
    uint8_t         u8TestData = 0x5a;      
   
    ///< 确保初始化正确执行后方能进行FLASH编程操作,FLASH初始化(编程时间,休眠模式配置)
    while(Ok != Flash_Init(1, TRUE))
    {
      ;
    }
   
    ///< FLASH目标扇区擦除
    while(Ok != Flash_SectorErase(u32Addr))
    {
      ;
    }
   
    for (u32Addr=0xFF00; u32Addr<0x10000; u32Addr++)
    {
      ///< FLASH 字节写、校验
      if (Ok == Flash_WriteByte(u32Addr, u8TestData))
      {
            while(*((volatile uint8_t*)u32Addr) != u8TestData)///< 如果写入的数据不对,在此处死循环
            {
                ;
            }
      }
    }
   
    while (1);
}

martinhu 发表于 2020-9-15 14:33

Flash不是EEPROM,同一个地址,擦除一次,只能写一次,不能重复写。
另外,擦除的最小单位是扇区……

caigang13 发表于 2020-9-15 18:11

没明白描述

chenjun89 发表于 2020-9-15 18:27

死在哪个操作的校验循环啊?

边缘天空 发表于 2020-9-17 06:40

martinhu 发表于 2020-9-15 14:33
Flash不是EEPROM,同一个地址,擦除一次,只能写一次,不能重复写。
另外,擦除的最小单位是扇区…… ...

我再次写时又对该扇进行了扇区擦除然后才写的,是不是FLASH存储区在程序运行期间不能反复擦除写入操作?应该不可能吧。

嵌入小菜菜 发表于 2020-9-17 11:53

这个帖子不错的,我想问问,FLAsh的精准操作,还是比较实用的。

zhouyong77 发表于 2020-9-18 07:21

再次重新读写是怎么个操作法,贴出来的是一个main函数,重复上电?

Alenfun 发表于 2021-6-21 17:47

出现写成功后,有时读出来出现0xff,头大

生非 发表于 2021-12-8 22:30

顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

daichaodai 发表于 2021-12-9 08:25

外部flash还是内部啊?

koala889 发表于 2021-12-28 10:44

器件特性,就是写之前,要擦除吧

Alenfun 发表于 2022-1-17 18:26

Alenfun 发表于 2021-6-21 17:47
出现写成功后,有时读出来出现0xff,头大

写flash前没有关中断导致的,,关全局中断后可以了

gouguoccc 发表于 2022-1-18 08:37

flash写之前要先擦除

HC11425 发表于 2022-1-18 10:36

量产源码,仅供参考,HC32L13X系列内部FLASH操作。小华半导体技术支持热线:131 6807 9092 喻生
内部FLASH操作已经封装好了,可以直接调用。
页: [1]
查看完整版本: HC32L130读写FLASH问题