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

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

被折叠的 条评论
为什么被折叠?



