CH32v103 FLASH(用户选择字 0x1FFFF800) 请发个读写例子
您好,在CH32V103 FLASH库函数中有直接对用户选择字区域操作的函数,如下图,解锁后直接调用该函数对用户选择字区域对应地址写入数据即可。读的话直接读该地址即可。
0x1FFFF810设置不上,请问是什么原因?
代码:
FLASH_Unlock();
FLASH_EraseOptionBytes();
FLASH_ProgramOptionByteData((uint32_t)0x1FFFF800,0xA5);
FLASH_ProgramOptionByteData((uint32_t)0x1FFFF808,0xFF);
FLASH_ProgramOptionByteData((uint32_t)0x1FFFF80A,0xFF);
FLASH_ProgramOptionByteData((uint32_t)0x1FFFF810,0x01);
printf("0x1FFFF800---------%08x\r\n", *(u32*)0x1FFFF800);
printf("0x1FFFF808---------%08x\r\n", *(u32*)0x1FFFF808);
printf("0x1FFFF810---------%08x\r\n", *(u32*)0x1FFFF810);
FLASH_Lock();
Delay_Ms(1000);
printf("0x1FFFF810-%08x\r\n", *(u32*)0x1FFFF810);
Delay_Ms(3000);
返回:
0x1FFFF800---------ffff5aa5
0x1FFFF808---------00ff00ff
0x1FFFF810---------ffffffff
0x1FFFF810-ffffffff
您好,用户选择可操作区域为0x1FFFF800到0x1FFFF80F,810超过这个区域了。后续若有问题,可邮箱(lzs@wch.cn)沟通。
手册里面不是说有128字节的选择字吗,memory mapping里面也说到0x1FFFF800-880。为什么说 FLASH_ProgramOptionByteData可操作区域为0x1FFFF800到0F。
您好,如下图,V103仅下图中区域可操作使用,其中存储用户数据一般放在Data0和Data1区域。若想要操作使用0x1FFFF810后面区域,可以使用V203系列,具体可参考下链接。后续若有问题,可邮箱(lzs@wch.cn)沟通。