【GD32F407】 读写内部flash函数

本文详细介绍了GD32系列微控制器的Flash特性及操作方法,包括Flash的读、擦除和写入函数实现。重点讲解了如何通过页擦除进行数据更新,并提供了具体的代码示例。
该文章已生成可运行项目,

GD32的flash特征

1、在flash的前512K字节空间内,CPU执行指令零等待;在此范围外,CPU读取指令存在较长延时;
2、对于flash大于1024KB(不包括等于1024KB)的,使用了两片闪存;前1024KB容量在第一片闪存(bank0)中,后续的容量在第二片闪存(bank1)中;
3、对于flash容量小于等于1024KB,只使用了bank0;
4、支持32位整字或16位半字编程,页擦除和整片擦除操作;
 

GD32 flash内部结构

bank0 内存分布入下

 bank1内存分布如下

 GD32 flash读函数

        flash可以想普通空间一样直接地址访问内存

value = *(volatile u32 *)flash_addr;
u32 IapFlashRead(u32 addr)
{
    return (*(volatile u32 *)addr);
}

GD32 flash 擦除函数

        由于GD32 flash只支持四种擦除模式:整体擦除,bank0擦除,bank1擦除,页擦除,我们在实际读写flash过程中使用最多的还是页擦除

这里我们可以直接调用GD32的库函数进行擦除

/*!
    \brief      erase sector
    \param[in]  fmc_sector: select the sector to erase
      \arg        CTL_SECTOR_NUMBER_0: sector 0 
      \arg        CTL_SECTOR_NUMBER_1: sector 1 
      \arg        CTL_SECTOR_NUMBER_2: sector 2 
      \arg        CTL_SECTOR_NUMBER_3: sector 3 
      \arg        CTL_SECTOR_NUMBER_4: sector 4 
      \arg        CTL_SECTOR_NUMBER_5: sector 5 
      \arg    
本文章已经生成可运行项目
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Enosji

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值