GD32F105RBT6 关于FMC内部flash操作问题
请问大家一下,怎么在GD32F105RBT6里的内部flash单个字节写入(8位写入),库里面的fmc_word_program和fmc_halfword_program分别是 32位个16位的,这样把一串unsigned char数组写进去内部flash有点不方便 Read-Modify-Write 用缓冲区 在GD32F105RBT6中实现单字节(8位)写入到内部Flash,虽然官方库只提供了32位(fmc_word_program)和16位(fmc_halfword_program)的写入函数,但可以通过 读取-修改-写入方式,这是最可靠的方法,适用于需要保留Flash中已有数据的情况 您可以试试缓冲写入方式 其实如果需要写入多个连续字节,可以先缓存到RAM中,然后一次性写入 重要注意Flash特性限制,Flash只能从1变为0,不能从0变1 其实一定要知道的是,写入前必须擦除(擦除后所有位变为1) 一般来说,最小擦除单位通常是扇区 必须先擦除目标扇区然后写入数据,这种方法效率较低,因为每个字节写入都需要读取和写入整个字 对于大量数据写入,建议设计为按页(或扇区)为单位进行管理 写入地址必须是偶数地址(16位对齐)或4的倍数(32位对齐),跨字边界写入需要特殊处理 可以尝试使用位操作来实现单个字节的写入。具体方法是先读取目标地址的内容,然后修改对应的字节,最后再写回。
页:
[1]