首先要了解自己的开发板内部flash容量以及地址
这里103ZE系列的内部flash是512K 属于大容量内存产品
这里贴一张内存对应地址映射的图
可以看到这里有几个比较重要的寄存器,我们稍后会讲到
这里先提供一个简单的流程图 方便大家理解
首先我们要做的便是解锁,我们从闪存编程参考手册中可以得到键值 也就是第一步所说要写入的特定的序列
解锁
实际上st提供底层驱动 也帮我们封装好了
这里直接使用库函数进行解锁
数据擦除
解锁之后,就是删除所在page的内容 我们也可以直接调用封装好的库函数
这里需要注意一点,因为我们每次都是半字写入 也就是以两个字节为单位,所以我们的Page_Address 需要是2的倍数 否则可能会出现未知的错误
数据写入
然后照着这个思路我们就开始往flash当中写入数据了
这里我使用的是正点原子提供的函数
原理也非常简单 可以实现多字节写入
上锁
上锁也非常简单,直接调用官方提供的函数进行操作即可
以上就是写操作的全部内容了,原理很简单
然后就是flash的读操作了
读操作
读操作想较于写操作更加的简单,只要直接读取相应的地址进行取值即可 如下是官方的提示
这里通用的 和写操作一样 我们使用一个函数进行多字节的读取
小结
OK 以上就是全部内容,上面只是很简单的一部分操作,可以完成最基本的读写,在了解原理以后可以 自己动手实现 翻页读写处理,写保护和读保护