CH32X035的存储器分配
可供用户使用的存储器有程序最大 62K 字节的程序闪存存储区(CodeFlash)和256 字节用于用户选择字存储区
由于不想占用程序闪存存储区就研究了一下用户选择字存储区,虽然描述中用户选择字存储区大小为256字节,但在详细描述中却只介绍了用户选择字信息块的8个字节,对于其他地址的信息没有任何描述。
难道用户选择字存储区只有0x1FFFF800---0x1FFFF80C地址的数据可以使用吗?
看了下官方例程,也是只进行了0x1FFFF800---0x1FFFF80C地址的数据进行读写测试
仔细研究了一下例程的函数,和用户选择字存储区相关的函数有3个
通过寄存器对比发现,用户选择字内容,改写后,设备复位后会被映射到FLASH_OBR 和FLASH_WPR,这两个寄存器均为只读。
而用户选择字存储区0x1FFFF80C之后的存储区如何使用就只能自己摸索了。
于是我使用flash例程做的如下测试
前4的字的地址是0x1FFFF800---0x1FFFF80C
第五个字的地址是0x1FFFF810(buf[4])
运行结果如下
写入的测试 数据和读写的测试数据一致,说明从0x1FFFF810开始往后的地址用户可以正常使用![]
总结:用户选择字存储区的前4个字(16个字节)存储区是有专门用途或格式要求的(每个字节有对应的反码),而后面的240个字节就没有格式要求了,可是按自己的意愿随意使用,但每次改写前都要先把前4个字的内容保存好再一起重新写入才行。
|